MATLAB曲線擬合工具箱

今天幫同學做了一個非線性函數的曲線擬合,以前沒做過,所以是摸著石頭過河。費了一下午時間,終於把曲線擬合出來了,順道也學習了使用Matlab進行曲線擬合的方法,把學習所得記錄下來,和大家共享。

一、 單一變數的曲線逼近

Matlab有一個功能強大的曲線擬合工具箱 cftool ,使用方便,能實現多種類型的線性、非線性曲線擬合。下面結合我使用的 Matlab R2007b 來簡單介紹如何使用這個工具箱。

假設我們要擬合的函數形式是 y=A*x*x + B*x, 且A>0,B>0 。

1、在命令行輸入數據:

》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];

》y=[5 10 15 20 25 30 35 40 45 50];

2、啟動曲線擬合工具箱

》cftool

3、進入曲線擬合工具箱界面「Curve Fitting tool」

(1)點擊「Data」按鈕,彈出「Data」窗口;

(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名「Data set name」,然後點擊「Create data set」按鈕,退出「Data」窗口,返回工具箱界面,這時會自動畫出數據集的曲線圖;

(3)點擊「Fitting」按鈕,彈出「Fitting」窗口;

(4)點擊「New fit」按鈕,可修改擬合項目名稱「Fit name」,通過「Data set」下拉菜單選擇數據集,然後通過下拉菜單「Type of fit」選擇擬合曲線的類型,工具箱提供的擬合類型有:

  • Custom Equations:用戶自定義的函數類型
  • Exponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
  • Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) + b1*sin(x*w)
  • Gaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)
  • Interpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic spline、shape-preserving
  • Polynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree ~
  • Power:冪逼近,有2種類型,a*x^b 、a*x^b + c
  • Rational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型
  • Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
  • Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x + c1)
  • Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)

選擇好所需的擬合曲線類型及其子類型,並進行相關設置:

——如果是非自定義的類型,根據實際需要點擊「Fit options」按鈕,設置擬合演算法、修改待估計參數的上下限等參數;

——如果選Custom Equations,點擊「New」按鈕,彈出自定義函數等式窗口,有「Linear Equations線性等式」和「General Equations構造等式」兩種標籤。

在本例中選Custom Equations,點擊「New」按鈕,選擇「General Equations」標籤,輸入函數類型y=a*x*x + b*x,設置參數a、b的上下限,然後點擊OK。

(5)類型設置完成後,點擊「Apply」按鈕,就可以在Results框中得到擬合結果,如下例:

general model:

f(x) = a*x*x+b*x

Coefficients (with 95% confidence bounds):

a = 0.009194 (0.009019, 0.00937)

b = 1.78e-011 (fixed at bound)

Goodness of fit:

SSE: 6.146

R-square: 0.997

Adjusted R-square: 0.997

RMSE: 0.8263

同時,也會在工具箱窗口中顯示擬合曲線。

這樣,就完成一次曲線擬合啦,十分方便快捷。當然,如果你覺得擬合效果不好,還可以在「Fitting」窗口點擊「New fit」按鈕,按照步驟(4)~(5)進行一次新的擬合。

不過,需要注意的是,cftool 工具箱只能進行單個變數的曲線擬合,即待擬合的公式中,變數只能有一個。對於混合型的曲線,例如 y = a*x + b/x ,工具箱的擬合效果並不好。下一篇文章我介紹幫同學打開曲線擬合工具。

Syntax.語法。

cftool。

cftool(x,y)。

Arguments論據。

x

矢量數據的預測。

ydata。

矢量數據的反應。

Description.描述。

cftool打開曲線擬合工具。

cftool(x,y)。

打開Curve Fitting Tool 曲線擬合工具與擴展實體數據和ydata指定的響應數據指定的預測數據。x數據和y必須是相同的大小向量。Infs and NaNs 一定要避免,因為你可以忽略不適合數據包含這些值。此外,只有一個複合向量才可使用。

Remarks.備註。

曲線擬合工具是一個圖形用戶界面(GUI),允許您:

數據直觀地探索和散點圖適合。

圖形的擬合優度評價和預測殘差使用範圍。

訪問圖形用戶界面輸入,預處理和數據擬合,以及適合繪圖和分析的數據。

曲線擬合工具如下所示。這些數據是從census MAT-file定的文件,並擬合是二次多項式並繪圖.

The Curve FittingTool提供有利於數據和探索適合多種功能。請參閱查看數據為這些功能的描述。

The Data GUI數據界面:

1數據圖形用戶界面允許你導入,預覽,名稱,並設置刪除數據;

2平滑雜訊數據。

數據顯示如下界面與census數據載入。

DataSets 數據集........smooth平穩

import wokerspace vectors: 輸入wokerspace向量 . ..Preview....預覽..(圖)

X Data . .. cade

Y Data . .. pop

Weights高: ... none

Data set name數據集名稱:... pop vs.cdate

... Create data set創建數據集

Data sets:..數據集

view 查看.... .rename 重命名.. .. . delete 刪除

The Fitting GUI

1擬合圖形用戶界面允許你

2適合使用參數或數據非參數方程。

3檢查並比較合適的結果,包括價值和擬合係數擬合 current session 。

保存所有的數據集和跟蹤為 適應current。

擬合圖形用戶界面顯示如下:數據擬合的結果,一個二次多項式。

The Exclude GUI排除圖形界面:

排除圖形用戶界面允許你創建一個數據排除規則。排除規則確定的數據擬合,而被排除在外。該數據可以排除個別數據點,或預測或響應數據段。排除界面如下表明,前兩個數據的普查數據點標記為排斥,而這種名為exc1排除規則。

The Plotting GUI(繪製圖形界面):

在繪製圖形用戶界面使您可以控制數據集和適合的曲線擬合工具中顯示。繪製圖形所示表明,census數據和適合poly2由曲線擬合工具中顯示。

The Analysis GUI (圖形用戶界面的分析。)

圖形用戶界面的分析,您可以:

評估(插或外推),分化,或整合合適;

plot的分析結果和數據集;

The Analysis GUI 界面如下的分析顯示推算,10年增量從2000年的人口普查數據,2050年的數值結果。

推薦閱讀:

對於血鉀濃度改變引起心肌興奮性的變化?其變化可否用函數表達?表達式是否具有意義?
多批次的訂單分揀系統貨架分配演算法是怎麼樣的?
用一刀能從一個實體裡面切出來一個莫比烏斯環嗎?切剩餘的形狀是什麼?請證明

TAG:数学建模 | MATLAB | 多项式拟合 |