How are initial values chosen for either lsqcurvefit or nlinfit functions?

I want to fit my experimental data to a theoretical model which contains an exponential. I've attached a copy of the code I'm using. I've tried various x0 matrix values, but the same error message keeps popping up:
Caused by: Failure in initial objective function evaluation. LSQCURVEFIT cannot continue.

답변 (3개)

Torsten
Torsten 2018년 9월 19일

0 개 추천

There must be some mathematical operation within your objective function that gives Inf, NaN or something similar (e.g. division by zero, log or sqrt of a negative number, exponentiation of a negative number ...).
Best wishes
Torsten.
Ken Mathai
Ken Mathai 2018년 9월 19일
편집: Walter Roberson 2018년 9월 19일
So if I have the following:
xdata=cranialStrain
ydata=cranialStress
fun=@(x,xdata)(x(1)*xdata+x(2)*xdata*xdata);
x0 = [0.1 0.1 0];
x = lsqcurvefit(fun,x0,xdata,ydata)
I should be careful that my data does not include negative numbers for ydata, as that would cause issues for the model equation?

댓글 수: 3

Here the error is that
fun=@(x,xdata)(x(1)*xdata+x(2)*xdata.*xdata);
must be used instead of
fun=@(x,xdata)(x(1)*xdata+x(2)*xdata*xdata);
Furthermore, y=p1*x+p2*x^2 is a linear parameter estimation problem. No need to use "lsqcurvefit" here.
What I mean is: Look for expressions in your function that evaluate to Inf or NaN (e.g. p(1)/xdata where some of the xdata are zero or log(x(1)) (the parameter vector can become negative), or ...)
Best wishes
Torsten.
hmm. I'm not sure why you say this is a linear parameter estimation problem. Isn't the fact that the xdata is being squared make the model a quadratic?
Also, I made the proposed change to xdata in the multiplication and I reformatted the axes to not include negative numbers. This allowed me to run the code without error!
Linear means: The equation is linear in the parameters.
It is irrelevant how "xdata" enters the equation.
Thus in your case x(1) and x(2) are simply given by
x = [xdata xdata.^2]\ydata
where xdata and ydata are your respective column vectors.
Best wishes
Torsten.
Ken Mathai
Ken Mathai 2018년 9월 19일

0 개 추천

Ah, ok. But what other way is there to fit the data to my model equation? I also do not have the cftool box.

댓글 수: 1

It should suffice to have the Optimization Toolbox (lsqcurvefit, fmincon,...)

이 질문은 마감되었습니다.

태그

질문:

2018년 9월 19일

마감:

2021년 8월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by