我想在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] = ...
如何克服此错误?
答案 0 :(得分:3)
您应该查看函数lsqcurvefit
的{{3}}。您正在使用该功能错误。要传递结构options
,您应该使用7参数版本并将结构作为最后的第7个参数传递:
x = lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);
这意味着您还需要将lb
和ub
定义为第5和第6个参数。这些是x
中设计变量的下限和上限。
但是如果不存在边界,你也可以传递空矩阵:
x = lsqcurvefit(@myfun,x0,xdata,ydata,[],[],options);