gpt4 book ai didi

matlab - 具有多个参数的 levenberg marquardt 曲线拟合 MATLAB

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:21 33 4
gpt4 key购买 nike

我正在尝试使用 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 个点的数据?

如有任何意见,我将不胜感激。

最佳答案

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

 [-100:100]

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

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

关于matlab - 具有多个参数的 levenberg marquardt 曲线拟合 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070044/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com