簡體   English   中英

levenberg marquardt曲線擬合MATLAB有幾個參數

[英]levenberg marquardt curve fitting MATLAB with several parameters

我試圖用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個起始值的向量作為第二個參數,看看它是否產生了你期望的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM