Matlab指定函數(shù)曲線擬合教程
在學(xué)習(xí)的過程中,我們經(jīng)常需要對(duì)一些離散數(shù)據(jù)進(jìn)行指定函數(shù)的曲線擬合,來(lái)驗(yàn)證一些理論推理。下面我將為大家示范如何使用Matlab進(jìn)行指定函數(shù)的曲線擬合。準(zhǔn)備數(shù)據(jù)我們通過阻尼振蕩實(shí)驗(yàn)中測(cè)得離散數(shù)據(jù)來(lái)進(jìn)行示范
在學(xué)習(xí)的過程中,我們經(jīng)常需要對(duì)一些離散數(shù)據(jù)進(jìn)行指定函數(shù)的曲線擬合,來(lái)驗(yàn)證一些理論推理。下面我將為大家示范如何使用Matlab進(jìn)行指定函數(shù)的曲線擬合。
準(zhǔn)備數(shù)據(jù)
我們通過阻尼振蕩實(shí)驗(yàn)中測(cè)得離散數(shù)據(jù)來(lái)進(jìn)行示范,數(shù)據(jù)如下:
x [0 0.4 1.2 2 2.8 3.6 4.4 5.2 6 7.2 8 9.2 10.4 11.6 12.4 13.6 14.4 15];
y [1 0.85 0.29 -0.27 -0.53 -0.4 -0.12 0.17 0.28 0.15 -0.03 -0.15 -0.071 0.059 0.08 0.032 -0.015 -0.02];
我們先通過散點(diǎn)圖來(lái)觀察其大致規(guī)律。
選擇擬合函數(shù)模型
由上面的散點(diǎn)圖可知,其對(duì)應(yīng)的函數(shù)形式為指數(shù)衰減的余弦函數(shù),即a*cos(k*t)*exp(w*t)。
使用Matlab進(jìn)行曲線擬合
接下來(lái)我們采用這個(gè)函數(shù)模型對(duì)上面的離散數(shù)據(jù)進(jìn)行曲線擬合,代碼如下:
syms tf fittype('a*cos(k*t)*exp(w*t)', 'independent', 't', 'coefficients', {'a', 'k', 'w'});
cfun fit(x, y, tf);
% 顯示擬合函數(shù),數(shù)據(jù)必須為列向量形式
xi 0:0.1:20;
yi cfun(xi);
figure
plot(x, y, 'r*');
hold on
plot(xi, yi, 'b-');
title('擬合函數(shù)圖形');
figure
plot(x, sqrt((y-yi(1:1:18,:)).^2/18), 'r*');
title('標(biāo)準(zhǔn)誤差圖');
由上面的擬合函數(shù)圖形和標(biāo)準(zhǔn)誤差圖形可知,擬合函數(shù)給出了數(shù)據(jù)的大致趨勢(shì),結(jié)果很好。下面再給出幾個(gè)參數(shù)值與對(duì)應(yīng)參數(shù)的置信區(qū)間。
代碼解釋
細(xì)心的網(wǎng)友可能看到命令窗口中給出的Warning,其實(shí),因?yàn)槲覀內(nèi)齻€(gè)參數(shù)a,k,w三個(gè)參數(shù)的初始值未給出導(dǎo)致,因此如果擬合結(jié)果不是十分理想,可以多運(yùn)行幾次。
最后,我們對(duì)上述Matlab代碼所出現(xiàn)的一些函數(shù)進(jìn)行大致介紹,如果想要詳細(xì)介紹請(qǐng)參考Matlab說明文檔。
- fittype(): 自定義擬合函數(shù),在使用時(shí)直接模仿下面的參數(shù)填寫即可
- fit(): 根據(jù)自定義的擬合函數(shù)來(lái)擬合數(shù)據(jù)x,y,注意數(shù)據(jù)必須為列向量形式
總結(jié)
通過上面的Matlab代碼,我們成功地對(duì)離散數(shù)據(jù)進(jìn)行了指定函數(shù)的曲線擬合,得到了較為理想的擬合結(jié)果。希望對(duì)大家學(xué)習(xí)Matlab曲線擬合有所幫助。