Info

此问题已关闭。 请重新打开它进行编辑或回答。

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

1 次查看(过去 30 天)
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
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 个评论
Ken Mathai
Ken Mathai 2018-9-19
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!
Torsten
Torsten 2018-9-19
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
Ah, ok. But what other way is there to fit the data to my model equation? I also do not have the cftool box.

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by