『壹』 怎麼用matlab進行非線性的多元函數擬合
matlab擬合工具箱cftool
%擬合數據曲線;線性最小二乘法是解決曲線擬合的最常用的方法,
%1、多項式擬合函數;p=polyfit(x,y,n);求p擬合函數在xi處的近似值pi=polyval(p,xi);
%2、利用常用矩陣的除法解決復雜函數的擬合;
%3、利用lsqcurvefit函數和lsqnonlin函數擬合;
%4、利用cftool工具箱,自定義編寫函數再通過M文件導出的形式
http://phylab.fudan.e.cn/doku.php?id=howtos:matlab:mt1-5
http://hi..com/zzz700/blog/item/f313a3f5869659b5a40f52d7.html英文參考
一、 單一變數的曲線逼近
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 ,工具箱的擬合效果並不好。下一篇文章我介紹幫同學做的一個非線性函數的曲線擬合。
上邊對cftool工具箱做了很詳盡的說明,但並沒有對各種曲線擬合的性能做點評,在單變數曲線擬合中,如何選取一種最優化的擬合方式是非常重要的,我們在採用CFTOOL擬合後,會有一些性能說明,如:
Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263
官方的解釋:
Results -- Displays detailed results for the current fit including the fit type (model, spline, or interpolant), the fitted coefficients and 95% confidence bounds for parametric fits, and these goodness of fit statistics:
SSE -- The sum of squares e to error. This statistic measures the deviation of the responses from the fitted values of the responses. A value closer to 0 indicates a better fit.
R-square -- The coefficient of multiple determination. This statistic measures how successful the fit is in explaining the variation of the data. A value closer to 1 indicates a better fit.
Adjusted R-square -- The degree of freedom adjusted R-square. A value closer to 1 indicates a better fit. It is generally the best indicator of the fit quality when you add additional coefficients to your model.
RMSE -- The root mean squared error. A value closer to 0 indicates a better fit.
Matlab曲面擬合和插值 AAAAAAAAAAA風雲博客
http://xiaoqiang851224.blog.163.com/blog/#m=0&t=1&c=fks_
http://suhao198706.blog.163.com/blog/static/62173403201121095512602/?fromdm&fromSearch&isFromSearchEngine=yes
Matlab曲線擬合
http://xiaoqiang851224.blog.163.com/blog/static/30247003201153083539419/?fromdm&fromSearch&isFromSearchEngine=yes
多項式擬合函數polyfit之C語言的源碼
http://xiaoqiang851224.blog.163.com/blog/static/30247003201010251055758/
matlab二元函數擬合;
http://..com/question/141374449.html?fr=qrl&cid=93&index=2
matlab非線性擬合1(指數函數)
http://apps.hi..com/share/detail/43922314
『貳』 用matlab曲線擬合工具箱擬合數據後要進行預測,應該怎麼做啊哪位大神
不是matlab安裝的問題,這個問題我也遇到過,遍求解答無果之後,終於自己摸索出來了。是這樣的,不要用gui中的data按鈕來新建數據集,而要在matlab命令窗口中,輸入命令:cftool(a,b),其中a,b就是你要設置的x、y坐標的向量。這樣出來散點圖,之後再在cftool工具箱的gui中點fitting按鈕,選擇曲線擬合
『叄』 如何用MATLAB對二組數據同時進行曲線擬合
Matlab是一個很強大的數據處理軟體,是人們進行數據分析的得力助手。一般我們做社會調研或科學研究時,會得到很多實驗數據。當需要研究兩個變數之間的關系時,經常要用到曲線擬合。曲線擬合不僅能給出擬合後的關系式,還能用圖形直觀的展現出變數之間的關系。 其實用matlab做曲線擬合很便捷,下面將以兩個變數(y=f(x))為例詳細介紹:
運行Matlab軟體。
在工作空間中存入變數的實驗數據。具體如下:
可以直接用矩陣來存放數據,直接在命令窗口輸入
x=[數據x1,數據x2,...,數據xn];
y=[數據y1,數據y2,...,數據yn];
當數據較多時,可以從excel,txt等文件中導入。
把數據存入工作空間後,在命令窗口中輸入cftool,回車運行。
在這個擬合工具窗口的左邊,選擇變數,即分別選擇x,y。
選擇擬合的曲線類型,一般是線性擬合,高斯曲線,平滑曲線等,根據需要選擇。
選擇完後會自動完成擬合,並且給出擬合函數表達式。
『肆』 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。
『伍』 如何用matlab數據擬合函數
Matlab有一個功能強大的曲線擬合工具箱 cftool ,使用方便,能實現多種類型的線性、非線性曲線擬合。下面結合我使用的 Matlab R2007b 來簡單介紹如何使用這個工具箱。x0dx0ax0dx0a假設我們要擬合的函數形式是 y=A*x*x + B*x, 且A>0,B>0。x0dx0ax0dx0a1、在命令行輸入數據:x0dx0a》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];x0dx0a》y=[5 10 15 20 25 30 35 40 45 50];x0dx0ax0dx0a2、啟動曲線擬合工具箱x0dx0a》cftoolx0dx0ax0dx0a3、進入曲線擬合工具箱界面「Curve Fitting tool」x0dx0a(1)點擊「Data」按鈕,彈出「Data」窗口;x0dx0a(2)利用X data和Y data的下拉菜單讀入數據x,y,可修改數據集名「Data set name」,然後點擊「Create data set」按鈕,退出「Data」窗口,返回工具箱界面,這時會自動畫出數據集的曲線圖;x0dx0a(3)點擊「Fitting」按鈕,彈出「Fitting」窗口;x0dx0a(4)點擊「New fit」按鈕,可修改擬合項目名稱「Fit name」,通過「Data set」下拉菜單選擇數據集,然後通過下拉菜單「Type of fit」選擇擬合曲線的類型,工具箱提供的擬合類型有:x0dx0aCustom Equations:用戶自定義的函數類型x0dx0aExponential:指數逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)x0dx0aFourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1*cos(x*w) + b1*sin(x*w)x0dx0aGaussian:高斯逼近,有8種類型,基礎型是 a1*exp(-((x-b1)/c1)^2)x0dx0aInterpolant:插值逼近,有4種類型,linear、nearest neighbor、cubic spline、shape-preservingx0dx0aPolynomial:多形式逼近,有9種類型,linear ~、quadratic ~、cubic ~、4-9th degree ~x0dx0aPower:冪逼近,有2種類型,a*x^b 、a*x^b + cx0dx0aRational:有理數逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型x0dx0aSmoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)x0dx0aSum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1*sin(b1*x + c1)x0dx0aWeibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)