我有一組x和y值,我想要擬合一個多項式曲線。函數應該採用高達9階多項式的形式;matlab優化工具箱 - 多項式擬合
y = a(1)*X.^1 + a(2)*X.^2 + a(3)*X.^3 + a(4)*X.^4 + a(5)*X.^5 + a(6)*X.^6 + a(7)*X.^7 + a(8)*X.^8 + a(9)*X.^9;
其中a(n)爲我的係數。
我有兩個問題。該曲線可能並不總是採用9階多項式的形式。它可能是一個3階,6階或其他任何東西(最多9階)。
我不確定如何使用優化工具箱進行設置。有任何想法嗎?
其次,我可以設置一個約束,以便計算的y值總是正的嗎?
非常感謝,
當前代碼在下面。
功能;
function F = polyfun(a,redCO2)
F = a(1)*redCO2.^1 + a(2)*redCO2.^2 + a(3)*redCO2.^3 + a(4)*redCO2.^4 + a(5)*redCO2.^5 + a(6)*redCO2.^6 + a(7)*redCO2.^7 + a(8)*redCO2.^8 + a(9)*redCO2.^9;
F = @(a) polyfun(a,X);
a0 = [100, 100, 100, 100, 100, 100, 100, 100, 100]; % Starting guess
a = lsqcurvefit(@polyfun,a0,X,y);
道歉,它說:redCO2 – user3491279 2014-10-28 21:05:25
如果您可以訪問它的功能代碼應爲X,曲線擬合工具箱大概會做一個更好的工具來用於你想要做的事情。 – MrAzzaman 2014-10-28 21:09:24