1

我想在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] = ...

我该如何克服这个错误?

4

1 回答 1

3

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

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

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

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

x = lsqcurvefit(@myfun,x0,xdata,ydata,[],[],options);
于 2012-07-04T20:55:11.990 回答