摘要:介紹了使用MATLAB曲線擬合工具箱(Curve Fitting Toolbox)對(duì)數(shù)據(jù)進(jìn)行曲線擬合,給出數(shù)學(xué)建模中的實(shí)例用以介紹其具體使用方法,并且給出利用MATLAB曲線擬合工具箱改善擬合結(jié)果的方法。結(jié)果顯示,用MATLAB曲線擬合工具箱能夠很好的對(duì)數(shù)據(jù)進(jìn)行曲線擬合的處理。
關(guān)鍵詞:MATLAB;曲線擬合;曲線擬合工具箱
中圖分類(lèi)號(hào):O1-8文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2010)21-5822-02
Curve Fitting by Curve Fitting Toolbox of Matlab
HU Qing-wan
(Department of Mathematics and Information Science, Qujing Normal University, Qujing 655011, China)
Abstract: In this paper,we introduced the use of MATLAB Curve Fitting Toolbox for curve fitting, gave an example of mathematical modeling to introduce the specific use, and gave methods for improving results getting from MATLAB curve fitting toolbox. The results show that MATLAB curve fitting toolbox is excellent in curve fitting.
Key words: MATLAB; curve fitting; curve fitting toolbox
MATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境。他具有很多優(yōu)勢(shì):友好的工作平臺(tái)和編程環(huán)境;簡(jiǎn)單易用的程序語(yǔ)言;強(qiáng)大的科學(xué)計(jì)算機(jī)數(shù)據(jù)處理能力;出色的圖形處理功能;應(yīng)用廣泛的模塊集合工具箱;實(shí)用的程序接口和發(fā)布平臺(tái);應(yīng)用軟件開(kāi)發(fā)。因此,Matlab軟件的應(yīng)用已經(jīng)深入到科研,生活,教育等各個(gè)領(lǐng)域。
在實(shí)際的工程應(yīng)用領(lǐng)域和經(jīng)濟(jì)應(yīng)用領(lǐng)域中,人們往往通過(guò)實(shí)驗(yàn)或者觀測(cè)得到一些數(shù)據(jù),為了從這些數(shù)據(jù)中找到其內(nèi)在的規(guī)律性,也就是求得自變量和因變量之間的近似函數(shù)關(guān)系表達(dá)式。這類(lèi)問(wèn)題可以歸結(jié)為曲線擬合。
1 MATLAB曲線擬合工具箱簡(jiǎn)介
MATLAB做曲線擬合可以通過(guò)內(nèi)建函數(shù)或者曲線擬合工具箱(Curve Fitting Toolbox)。這個(gè)工具箱集成了用MATLAB 建立的圖形用戶界面(GUIs)和M文件函數(shù)。利用這個(gè)工具箱可以進(jìn)行參數(shù)擬合(當(dāng)想找出回歸系數(shù)以及他們背后的物理意義的時(shí)候就可以采用參數(shù)擬合),或者通過(guò)采用平滑樣條或者其他各種插值方法進(jìn)行非參數(shù)擬合(當(dāng)回歸系數(shù)不具有物理意義并且不在意他們的時(shí)候,就采用非參數(shù)擬合方法)。利用這個(gè)界面,可以快速地在簡(jiǎn)單易用的環(huán)境中實(shí)現(xiàn)許多基本的曲線擬合。
2 實(shí)際例子應(yīng)用
數(shù)學(xué)模型書(shū)上關(guān)于汽車(chē)剎車(chē)距離模型,建立的模型如下:
D=t1v+kv2
其中v是汽車(chē)速度,t1是反應(yīng)時(shí)間,按大多數(shù)人平均取0.75秒,d是剎車(chē)距離。交通部門(mén)提供了一組剎車(chē)距離的實(shí)際數(shù)據(jù)如表1所示(剎車(chē)距離括號(hào)內(nèi)為最大值)。
利用表1的數(shù)據(jù),我們擬合k
在MATLAB的command window里輸入:
>> v=[29.3 44 58.7 73.3 88 102.7 117.3];
>> d1=[42 73.5 116 173 248 343 464];
>> cftool
則跳出曲線擬合工具箱的界面如圖1所示,如果輸入數(shù)據(jù)非常大,并且每次輸入有困難,可以新建一個(gè)M文件,依次輸入上述命令行,保存之后執(zhí)行,同樣可以進(jìn)入曲線擬合工具箱界面。
點(diǎn)擊“Data”按鈕,則出現(xiàn)如圖2所示的Data窗口,我們選擇X data 為v,Y Data為d1,則右側(cè)會(huì)出現(xiàn)散點(diǎn)圖。我們還可以進(jìn)行數(shù)據(jù)的加權(quán)擬合,權(quán)值可以是與數(shù)據(jù)相聯(lián)系的一個(gè)權(quán)向量。在“Weight”的下拉菜單中可以選擇。點(diǎn)擊“Create data set”,點(diǎn)擊“Close”按鈕退出“Data”窗口,返回工具箱界面,這時(shí)會(huì)自動(dòng)畫(huà)出數(shù)據(jù)集的散點(diǎn)圖。然后點(diǎn)擊圖1中“Fitting”按鈕,出現(xiàn)“Fitting”窗口,點(diǎn)擊“new fit”窗口如圖3所示。
然后通過(guò)下拉菜單“Type of fit”選擇擬合曲線的類(lèi)型,工具箱提供的擬合類(lèi)型有:
Custom Equations; Exponential; Fourier; Gaussian; Interpolant;Polynomial等11種類(lèi)型,本例雖然是二次多項(xiàng)式,但不是標(biāo)準(zhǔn)的二次多項(xiàng)式形式,故我們選Custom Equations,點(diǎn)擊“New equation”按鈕,選擇“General Equations”標(biāo)簽,出現(xiàn)如圖4所示窗口,輸入函數(shù)類(lèi)型y= k*x*x+0.75*x,設(shè)置初值以及參數(shù)k的上下限,然后點(diǎn)擊OK。類(lèi)型設(shè)置完成后,點(diǎn)擊“Apply”按鈕,就可以在Results框中得到擬合信息,同時(shí),也會(huì)在工具箱窗口中顯示擬合曲線。
3 利用Curve Fitting Toolbox 改善擬合結(jié)果
很多因素會(huì)對(duì)曲線擬合產(chǎn)生影響,導(dǎo)致擬合效果又好有壞,我們僅從一些角度出發(fā)探討有可能改善擬合質(zhì)量。
1) 模型的選擇:這是最主要的一個(gè)因素,試著用各種不同的模型對(duì)數(shù)據(jù)進(jìn)行擬合比較;
2) 數(shù)據(jù)預(yù)處理:在擬合前對(duì)數(shù)據(jù)進(jìn)行預(yù)處理也很有用,這包括對(duì)響應(yīng)數(shù)據(jù)進(jìn)行變換以及剔除Infs,NaNs,以及有明顯錯(cuò)誤的點(diǎn)。
3) 合理的擬合應(yīng)該具有處理出現(xiàn)奇異而使得預(yù)測(cè)趨于無(wú)窮大的時(shí)候的能力。
4) 知道越多的系數(shù)的估計(jì)信息,擬合越容易收斂。
5) 將數(shù)據(jù)分解為幾個(gè)子集,對(duì)不同的子集采用不同的曲線擬合。
6) 復(fù)雜的問(wèn)題最好通過(guò)進(jìn)化的方式解決,即一個(gè)問(wèn)題的少量獨(dú)立變量先解決。低階問(wèn)題的解通常通過(guò)近似映射作為高階問(wèn)題解的起始點(diǎn)。例如模型為y=c+aebx+dsin(fx)
那么最好每次擬合一個(gè)項(xiàng),通常從最重要的項(xiàng)開(kāi)始。先擬合y=c1+a1eb1x,然后利用擬合出的結(jié)果系數(shù)作為上式中的a,b,c 的起始值進(jìn)行完整的擬合。
4 結(jié)束語(yǔ)
MATLAB曲線擬合工具箱使用方便、直觀、快捷。利用這個(gè)界面,可以快速地在簡(jiǎn)單易用的環(huán)境中實(shí)現(xiàn)許多基本的曲線擬合。
參考文獻(xiàn):
[1] 姜啟源,謝金星,葉俊.數(shù)學(xué)模型[M].北京:高等教育出版社,2003.
[2] 蘇金明,張蓮花,劉波,等.MATLAB工具箱應(yīng)用[M].北京:電子工業(yè)出版社,2004:489-512.
[3] Mathews J H.數(shù)值方法(MATLAB版)[M].周璐,譯.4版.北京:電子工業(yè)出版社,2005.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文