[英]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.