How to set a parameter lower bound during curve fitting?

Hello, I want to set the lower bound for my p2 variable as 0, because a negative value is unphysical for my data set.
Here is my code:
rho=Resistivityohmcm; T=TemperatureK;
plot(T,rho,'-o')
x=T; y=rho;
fnPolySq=@(p1,p2,x) p1*x.^2 + p2; %fit(x,y,fnPolySq) mask = x > 135 ; %restricts the data fit to before the upturn
f = fit(x(mask), y(mask), fnPolySq ); plot(f, T, rho)
plot(f,T,rho) disp (f)
Thanks!

 Réponse acceptée

Adam Danz
Adam Danz le 25 Juil 2018
Modifié(e) : Adam Danz le 25 Juil 2018

0 votes

Here's how you set bounds using fit()
See 'Lower'.

3 commentaires

I tried what is stated in the link...
f = fit(x(mask), y(mask), fnPolySq,'StartPoint',[0,0] );
However, I still get a negative value for p2... General model: f(x) = p1*x.^2+p2 Coefficients (with 95% confidence bounds): p1 = 1.054e-07 (1.051e-07, 1.058e-07) p2 = -0.0005989 (-0.0006185, -0.0005792)
Can you elaborate on how to resolve this please?
In the line of code you shared, I don't see where you've implemented the 'Lower' parameter. See the link again and read the section, " 'Lower' — Lower bounds on coefficients to be fitted"

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by