MATLAB學習--多項式擬合(1)


(1)polyfit函數

MATLAB的polyfit函數用於多項式擬合,其語法為:

p = polyfit(x, y, k);

其中,x,y分別是橫縱坐標向量,它們不僅元素個數相同,而且同為行向量或同為列向量。k為非負整數,是待擬合的多項式的最高次數。p是輸出項,為待擬合的多項式的系數向量(由高次到低次排列)。

例子:

在MATLAB的命令窗口輸入以下代碼:

>> x = [1, 2, 3, 4];
>> y = [3, 5, 7, 9];
>> p = polyfit(x, y, 1)

敲擊回車鍵,得到輸出結果:

p =

    2.0000    1.0000

所以擬合得的函數就是:y = 2.0000X + 1.0000.

在進行多項式擬合時,必須注意的是,擬合的精度是有限的,一般而言,需要滿足以下條件:

記m為不重復的橫坐標的數目,則擬合次數k <= m - 1,在此前提下盡量使用低次多項式進行擬合。

 

(2)polyval函數

polyval,顧名思義就是“多項式的值”,該函數的功能是將已知數據代入擬合得的多項式求值。語法格式:

y = polyval(p, x);

其中,p是已經擬合的多項式(比如說(1)中的p),x是自變量組成的向量,y是所求值組成的向量。

例子:

在命令窗口輸入以下代碼:

>> clear
>> x = [1, 2, 3];
>> y = [3, 5, 7];
>> p = polyfit(x, y, 1); %得到擬合多項式:y = 2*x + 1
>> t = [1, 2, 3, 4, 5];
>> s = polyval(p, t)

得到結果:

s =

    3.0000    5.0000    7.0000    9.0000   11.0000


(3)計算多項式擬合的方差

已知原始數據x和y,擬合得到多項式p,判斷擬合效果好壞的一個重要指標是方差,方差的計算方法是

e = sum((y - polyval(p, x)).^2).

polyval(p, x)得到擬合值向量,y是真實值向量,兩者相減得到真實值和擬合值的差值向量,“.^2”表示對矩陣中的每一個元素進行平方運算,於是得到差值向量中每一個元素的平方,sum是求和函數,顯然就是求差值向量元素的平方和,而這就是方差。

例子:

編寫代碼求多項式:

>> x = [1, 2, 3, 4];
>> y = [4, 5, 6, 7];
>> p = polyfit(x, y, 1)

得到

p =

    1.0000    3.0000

於是擬合的多項式為:y = 1.0000x + 3.0000

編寫代碼求方差:

>> e = sum((y - polyval(p, x)).^2)

得到方差:

e =

  3.1554e-030

可見,方差≈0.表明擬合效果很好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM