levenberg marquardt曲线拟合MATLAB有几个参数

时间:2012-08-22 09:24:57

标签: matlab curve-fitting levenberg-marquardt

我正在尝试使用Matlab中的levenberg-Marquardt最小二乘法为我的数据拟合一个带有四个未知参数的巨大函数。我用了这个命令:

[x, resnorm]=lsqcurvefit(@myfun1,[-100:100], xdata, ydata, ...
                         [-inf, -inf, -1.5, -inf], [inf, inf, 1.5, inf], options)

这意味着我有兴趣约束第三个参数。但我面对这个问题:

??? Error using ==> lsqncommon at 102
Levenberg-Marquardt and Gauss-Newton algorithms do not handle bound constraints and trust-region-reflective algorithm
requires at least as many equations as variables; aborting.

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

我认为这个错误表明我的数据很小,因为它们是36分或者可能有太多未知参数,但我认为四个未知参数适合拟合!

所以,您怎么看?这是否意味着MATLAB无法使我的函数适应这36点数据?

我很感激任何评论。

1 个答案:

答案 0 :(得分:4)

根据此http://www.mathworks.co.uk/help/toolbox/optim/ug/lsqcurvefit.html,第二个参数是您希望优化的参数的起始值。你正在传递

 [-100:100]

(除非matlab自我上次使用以来发生了很大的变化)是一个201参数的向量,所以你似乎要求matlab优化超过201个参数。正如@Dan在下面的评论中指出的那样,你只有36个数据点,所以你所要求的是不合理的。您希望优化仅4个参数,因此您应该只输入4个起始值。您传递了4个向量用于限制选项,因此您在此处存在不一致。

我建议只输入一个包含4个起始值的矢量作为第二个参数,看看它是否会产生你期望的结果。