利用MATLAB進行曲線擬合


軟件環境:MATLAB2013a

 

一、多項式擬合

多項式擬合是利用多項式最佳地擬合觀測數據,使得在觀測數據點處的誤差平方和最小。

在MATLAB中,利用函數ployfit和ployval進行多項式擬合。

函數ployfit根據觀測數據及用戶指定的多項式階數得到光滑曲線的多項式表示,polyfit的一般調用格式為:P = polyfit(x,y,n)。其中x為自變量,y為因變量,n為多項式階數。

polyval的輸入可以是標量或矩陣,調用格式為

  • pv = polyval(p,a)
  • pv = polyval(p,A)

其中,p為多項式表示,a為標量,A為矩陣。當輸入參數為M*N矩陣A時,函數返回值pv也是M*N矩陣,且pv(i,j) = polyval(p,A(i,j))。

1,多項式擬合示例:對ln(1+x)在[0,1]的采樣數據作多項式擬合

(1)對ln(1+x)在[0,1]內采樣得到觀測數據x、y。

>> x = 0:0.1:1.0;
>> y = log(1+x);

 

 

(2)調用函數polyfit對觀測數據x、y作三階多項式擬合。

>> P = polyfit(x,y,3)

 

運行結果如下:

 

P對應的多項式為0.1079 - 0.3974x + 0.9825x+ 0.004x3.

(3)分別作擬合曲線和理論曲線

>> xi = 0:0.01:1.0;
>> yi = polyval(P,xi);   %多項式求值
>> plot(x,y,'ro');         %觀測數據點
>> hold on;
>> plot(xi,yi,'k');         %作擬合曲線
>> plot(xi,log(1+xi),'g');    %理論曲線
>> xlabel('x');
>> ylabel('y');
>> legend('采樣數據','擬合曲線','精確曲線');

 

效果如下:

 

二、指數函數擬合

1,指數函數擬合示例:對 1 - √x 在[0,1]的采樣數據作指數函數擬合。

(1)對 1 - √x 在[0,1]內采樣得到觀測數據 x、y。

>> x = 0:0.01:0.99;
>> y = 1 - sqrt(x);

 

 

(2)調用函數polyfit對 x 、lny 作一階多項式擬合。

>> P = polyfit(x,log(y),1)

 

運行結果如下:

 

(3)求得擬合曲線。

>> yi = exp(polyval(P,x));

 

 

(4)分別作觀測數據點、擬合曲線和理論曲線。

 

>> yi = exp(polyval(P,x));
>> plot(x,y,'k.');
>> hold on;
>> plot(x,yi,'r');
>> xlabel('x');
>> ylabel('y');
>> legend('采樣數據','擬合曲線');
>> hold off;

 

運行結果如下: 

 

(5)分析擬合誤差。

>> e = yi - y;
>> plot(x,e);
>> xlabel('x');
>> ylabel('誤差');

 

 

運行結果如下:

 

三、交互式曲線擬合工具

MATLAB為用戶提供了一個交互式曲線擬合工具 Basic Fitting interface。通過該工具,我們無須編寫代碼就可以完成一些常用的曲線擬合。

 

(1)載入census data數據。

>> load census

 

此時MATLAB基本工作空間生成兩個double型列向量 cdate 和 pop,cdate 表示1790~1990內10年為間隔的年份,pop為對應年份美國的人口。

>> whos

 

運行結果如下:

 

 

(2)作census data點圖。

>> plot(cdate,pop,'ko');

 

運行結果如下:

 

(3)在MATLAB的figure中選擇Tool → Basic Fitting,即得到Basic Fitting interface 界面。

  

 

 

用戶通過Plot fits面板選擇不同的曲線擬合方式,為了便於比較,我們可以選擇多種擬合方式,從而選擇效果最好的一種擬合。

如果某次擬合的效果較差,MATLAB會給出警告,這時用戶可以試着通過 Center and Scale X data 改善擬合效果。

如果Show equations復選框被選中,那么圖形窗口會顯示擬合方程;如果Plot residuals復選框被選中,那么擬合效果將顯示誤差余量。此外,還可以選擇不同的顯示類型,如Bar Plot(直方圖)、Scatter Plot(散點圖)、Line Plot(線圖)。

如果Show norm of residuals復選框被選中,那么誤差余量圖將顯示誤差余量的范數。

 

單擊,得到如下界面,通過該界面我們能看到擬合的數值結果:

 

再次單擊,得到如下界面。通過該界面右側的面板,我們可以得到任意點處擬合函數的值,如在編輯框中輸入 2000:10:2080,並單擊Evaluate按鈕,計算結果將顯示在列表框中。如果Plot evaluated result復選框被選中,那么計算結果將顯示在擬合曲線中。

 


免責聲明!

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



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