使用lsqcurvefit中的选项

时间:2012-07-04 19:26:42

标签: matlab curve-fitting least-squares levenberg-marquardt

我想在lsqcurvefit命令中使用Levenberg Marquardt算法。我做了以下事情:

options = optimset('LevenbergMarquardt','on');
x = lsqcurvefit(@myfun,x0,xdata,ydata,options);

我收到以下错误:

  

??? Error using ==> optim\private\lsqncommon
LSQCURVEFIT only accepts inputs of data type double.

Error in ==> lsqcurvefit at 149
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

如何克服此错误?

1 个答案:

答案 0 :(得分:3)

您应该查看函数lsqcurvefit的{​​{3}}。您正在使用该功能错误。要传递结构options,您应该使用7参数版本并将结构作为最后的第7个参数传递:

x = lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);

这意味着您还需要将lbub定义为第5和第6个参数。这些是x中设计变量的下限和上限。

但是如果不存在边界,你也可以传递空矩阵:

x = lsqcurvefit(@myfun,x0,xdata,ydata,[],[],options);