利用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.9825x2 + 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復選框被選中,那麽計算結果將顯示在擬合曲線中。
利用MATLAB進行曲線擬合