
How to fit quadratic function with plateau condition?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
madhuri dubey
il 23 Lug 2018
Commentato: Srishti Vishwakarma
il 16 Gen 2019
I want to fit quadratic function with plateau condition
(y=a(x+n)^2+b(x+n)+c, x < xc(Ymax) ;
y=yp, x >= xc(Ymax).
Where a,b,c & n are constants, and xc is critical value at which y is maximum. My data is x=[0,80,100,120,150], y=[1865,3608,4057,4343,4389].
0 Commenti
Risposta accettata
Matt J
il 23 Lug 2018
Modificato: Matt J
il 23 Lug 2018
LSQCURVEFIT seems to do a decent job. There was no guarantee that it would work - it's not clear to me that the model function has a well-defined Jacobian.
x=[0,80,100,120,150],
y=[1865,3608,4057,4343,4389]
p0=[0,polyfit(x,y,1)];
[p,resnorm,residual,exitflag,output] = lsqcurvefit(@F,p0, x,y,[],[0,inf,inf]);
a=p(1);
b=p(2);
c=p(3);
n=0; %redundant parameter
plot(x,y,'--*',x,polyval(p,x),'-');
xlabel 'x'
ylabel 'y'
function fval=F(p,xdata)
[a,b,c]=deal(p(1), p(2), p(3));
xc=-b/2/a;
if ~isfinite(xc),
xc=inf;
yp=inf;
else
yp=polyval(p,xc);
end
fval=polyval(p,xdata);
fval(xdata>xc)=yp;
end

6 Commenti
Matt J
il 23 Lug 2018
Because Matlab cannot recognize the function F(). You pasted it somewhere that makes it invisible.
Più risposte (2)
Vedere anche
Categorie
Scopri di più su Get Started with Curve Fitting Toolbox in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!