2015-06-08 34 views
0

我希望擬合多項式曲線(4 ou 5度)到我的數據。我用EXCEL做的,我得到大約10^-13參加第五屆之一,10 ^係數-9第四屆之一,10^-5,第三個...... 我想限制所有的係數不低於10^-2。曲線不會很好,但可以。 我該怎麼做polyfit函數?如何約束polyfit coef。到一定的精度(matlab)?

,然後從VUE的數學點。限制係數是否有意義?或者它是無用的,我最好繼續與二度polyfit(係數低於10^-2)。

的原因,我問這個:我做了一些研究,從物理的角度來看,有趣的是,測試5次的polyfit,但我不能使用係數超過10^-2低。

謝謝

+0

我不認爲有一種方法與'polyfit'要做到這一點,因爲該函數返回的錯誤最小化係數(我認爲在2範數中)在多項式和數據之間。就是這樣。您所假設的數據是否遵循五階多項式,或者這是蠻力曲線擬合? – TroyHaskin

+0

係數的大小取決於您在水平軸上使用的單位。如果您擁有數千個x值,則更高的係數將不得不非常小,結果將不在圖表中。考慮重新調整變量的大小。 –

+0

我無法重新調整比例,因爲我將在另一個編中使用係數,它將使用初始水平比例。我的數據應該遵循五階多項式(R^2 = 0.95)。 – Sarahdata

回答

1

使用fit而不是polyfit

%What is the degree of the polynomial (quartic) 
polyDegree = 4; 

%This sets up the options 
opts = fitoptions('Method', 'LinearLeastSquares'); 

%All coefficients of degrees not specified between x^n and x^0 can have any value greater than 10^-2 
opts.Lower = 1E-2; 
opts.Upper = inf(1, polyDegree + 1); 

%Do the fit using the specified polynomial degree. 
[fitresult, gof] = fit(x, y, ['poly', num2str(polyDegree)] , opts);