fun=inline ('c(1)*sin((pi/12)*t+c(2)))','c','t')
創(chuàng)新互聯(lián)公司專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、廣德網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為廣德等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
fun =
Inline function:
fun(c,t) = c(1)*sin((pi/12)*t+c(2))
t=[0 ,1, 2 ,3, 4 ,5 ,6 ,7, 8 ,9, 10, 11, 12,13 ,14 ,15 ,16 ,17 ,18, 19, 20 ,21, 22,23 ,24];
T=[15 ,14 ,14 ,14 ,14 ,15 ,16 ,18 ,20 ,22 ,23, 25 ,28, 31, 32 ,31, 29 ,27 ,25 ,24, 22, 20 ,18 ,17 ,16];
c=lsqcurvefit(fun,[0,0],t,T)
Optimization terminated: relative function value
changing by less than OPTIONS.TolFun.
c =
-6.97212793671912 0.76170885656579
T=-6.9721sin((pi/12)t+0.7617)
頻率直方圖我沒太用過 但是其他形式的曲線 比如控制領(lǐng)域的時(shí)域圖用一下方法是可以實(shí)現(xiàn)的。
首先:想辦法讀出樣本點(diǎn),x=(),y=() (在7.0里用小括號(hào)就可以了,不同版本可以自行改一下)
之后可參見如下方法,我也是轉(zhuǎn)載ilove.MATLAB論壇上的方法 用過很好用
轉(zhuǎn)載:“在Matlab 6.5以上的環(huán)境下,在左下方有一個(gè)"Start"按鈕,如同Windows的開始菜單,點(diǎn)開它,在目錄"Toolboxes"下有一個(gè)"Curve Fitting",點(diǎn)開"Curve Fitting Tool",出現(xiàn)數(shù)據(jù)擬合工具界面,基本上所有的數(shù)據(jù)擬合和回歸分析都可以在這里進(jìn)行。
下面給你簡(jiǎn)單介紹一下它的使用方法。
首先在Matlab的命令行輸入兩個(gè)向量,一個(gè)向量是你要的x坐標(biāo)的各個(gè)數(shù)據(jù),另外一個(gè)是你要的y坐標(biāo)的各個(gè)數(shù)據(jù)。輸入以后假定叫x向量與y向量,可以在workspace里面看見這兩個(gè)向量,要確保這兩個(gè)向量的元素?cái)?shù)一致,如果不一致的話是不能在工具箱里面進(jìn)行擬合的。
例如在命令行里輸入下列數(shù)據(jù):
x=(0:0.02:0.98)';
y=sin(4*pi*x+rand(size(x)));
此時(shí)x-y之間的函數(shù)近似的為正弦關(guān)系,頻率為2,但是存在一個(gè)誤差項(xiàng)。
可以通過作圖看出它們的大體分布:
plot(x,y,'*','markersize',2);
打開曲線擬合共工具界面,點(diǎn)擊最左邊的"Data..."按鈕,出現(xiàn)一個(gè)Data對(duì)話框,在Data Sets頁面里,在X Data選項(xiàng)中選取x向量,Y Data選項(xiàng)中選取y向量,如果兩個(gè)向量的元素?cái)?shù)相同,那么Create data set按鈕就激活了,此時(shí)點(diǎn)擊它,生成一個(gè)數(shù)據(jù)組,顯示在下方Data Sets列表框中。關(guān)閉Data對(duì)話框。此時(shí)Curve Fitting Tool窗口中顯示出這一數(shù)據(jù)組的散點(diǎn)分布圖。
點(diǎn)擊Fitting...按鈕,出現(xiàn)Fitting對(duì)話框,F(xiàn)itting對(duì)話框分為兩部分,上面為Fit Editor,下面為Table of Fits,有時(shí)候窗口界面比較小,F(xiàn)it Editor部分會(huì)被收起來,只要把Table of Fits上方的橫條往下拉就可以看見Fit Editor。在Fit Editor里面點(diǎn)擊New Fit按鈕,此時(shí)其下方的各個(gè)選框被激活,在Data Set選框中選中剛才建立的x-y數(shù)據(jù)組,然后在Type of fit選框中選取擬合或回歸類型,各個(gè)類型的擬合或回歸相應(yīng)的分別是:
Custom Equations 用戶自定義函數(shù)
Expotential e指數(shù)函數(shù)
Fourier 傅立葉函數(shù),含有三角函數(shù)
Gaussian 正態(tài)分布函數(shù),高斯函數(shù)
Interpolant 插值函數(shù),含有線性函數(shù),移動(dòng)平均等類型的擬合
Polynomial 多項(xiàng)式函數(shù)
Power 冪函數(shù)
Rational 有理函數(shù)(不太清楚,沒有怎么用過)
Smooth Spline ??(光滑插值或者光滑擬合,不太清楚)
Sum of sin functions正弦函數(shù)類
Weibull 威布爾函數(shù)(沒用過)
不好意思,沒有學(xué)過數(shù)理統(tǒng)計(jì),所以很多東西都是用了才知道,翻譯也就不太準(zhǔn)確。不過在Type of fit選框下方有一個(gè)列表框,基本上各個(gè)函數(shù)類里的函數(shù)都寫成解析式列在下方以供選擇,所以找合適的函數(shù)還是比較容易的。
在這個(gè)Type of fit選框中選擇好合適的類型,并選好合適的函數(shù)形式。于是點(diǎn)擊Apply按鈕,就開始進(jìn)行擬合或者回歸了。此時(shí)在Curve Fitting Tool窗口上就會(huì)出現(xiàn)一個(gè)擬合的曲線。這就是所要的結(jié)果。
在上面的例子中,選擇sum of sin functions中的第一個(gè)函數(shù)形式,點(diǎn)擊Apply按鈕,就可以看見擬合得到的正弦曲線。
在Fitting對(duì)話框中的Results文本框中顯示有此次擬合的主要統(tǒng)計(jì)信息,主要有
General model of sin1:
....... (函數(shù)形式)
Coefficients (with 95% conffidence range) (95%致信區(qū)間內(nèi)的擬合常數(shù))
a1=... ( ... ...) (等號(hào)后面是平均值,括號(hào)里是范圍)
....
Godness of fit: (統(tǒng)計(jì)結(jié)果)
SSE: ... (方差)
R-squared: ... (決定系數(shù),不知道做什么的)
Adjusted R-squared: ... (校正后的決定系數(shù),如何校正的不得而知)
RMSE: ... (標(biāo)準(zhǔn)差)
上面的例子中經(jīng)過擬合得到的函數(shù)最后為
y=0.9354*sin(12.36x+6.886)
頻率為1.98加減0.03,和原來設(shè)置的頻率為2符合,相對(duì)誤差為1.5%。
這是曲線擬合工具箱的一個(gè)最簡(jiǎn)單的使用方法,上面還有很多功能,寫是寫不完的,自己參照這個(gè)基本的思路,翻著英漢詞典,看著幫助,然后一個(gè)按鈕一個(gè)按鈕的試吧。
另外要說的是,如果想把這個(gè)擬合的圖像導(dǎo)出的話,在Curve Fitting Tool窗口的File菜單下選Print to Figure,此時(shí)彈出一個(gè)新的圖像窗口,里面是你要導(dǎo)出的圖像,在這個(gè)figure窗口的File菜單里再選Export,選擇好合適的格式,一般是jpeg,選擇好路徑,點(diǎn)擊OK就可以了。出來的圖像可以在Word等編輯環(huán)境中使用,就不多說了。
要修改圖像的性質(zhì),如數(shù)據(jù)點(diǎn)的大小、顏色等等的,只需要在對(duì)象上點(diǎn)右鍵,就差不多可以找到了?!?/p>
上面所說的X,Y向量就是樣本點(diǎn)。
下面是轉(zhuǎn)載的網(wǎng)址,希望有用處;extra=page=1
ilovematlab是個(gè)不錯(cuò)的論壇,我也是剛發(fā)現(xiàn),不過幫助很大,基本的問題在那都會(huì)有答案。
matlab擬合工具箱cftool
%擬合數(shù)據(jù)曲線;線性最小二乘法是解決曲線擬合的最常用的方法,
%1、多項(xiàng)式擬合函數(shù);p=polyfit(x,y,n);求p擬合函數(shù)在xi處的近似值pi=polyval(p,xi);
%2、利用常用矩陣的除法解決復(fù)雜函數(shù)的擬合;
%3、利用lsqcurvefit函數(shù)和lsqnonlin函數(shù)擬合;
%4、利用cftool工具箱,自定義編寫函數(shù)再通過M文件導(dǎo)出的形式
英文參考
一、 單一變量的曲線逼近
Matlab有一個(gè)功能強(qiáng)大的曲線擬合工具箱 cftool ,使用方便,能實(shí)現(xiàn)多種類型的線性、非線性曲線擬合。下面結(jié)合我使用的 Matlab R2007b 來簡(jiǎn)單介紹如何使用這個(gè)工具箱。
假設(shè)我們要擬合的函數(shù)形式是 y=A*x*x + B*x, 且A0,B0。
1、在命令行輸入數(shù)據(jù):
》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、啟動(dòng)曲線擬合工具箱
》cftool
3、進(jìn)入曲線擬合工具箱界面“Curve Fitting tool”
(1)點(diǎn)擊“Data”按鈕,彈出“Data”窗口;
(2)利用X data和Y data的下拉菜單讀入數(shù)據(jù)x,y,可修改數(shù)據(jù)集名“Data set name”,然后點(diǎn)擊“Create data set”按鈕,退出“Data”窗口,返回工具箱界面,這時(shí)會(huì)自動(dòng)畫出數(shù)據(jù)集的曲線圖;
(3)點(diǎn)擊“Fitting”按鈕,彈出“Fitting”窗口;
(4)點(diǎn)擊“New fit”按鈕,可修改擬合項(xiàng)目名稱“Fit name”,通過“Data set”下拉菜單選擇數(shù)據(jù)集,然后通過下拉菜單“Type of fit”選擇擬合曲線的類型,工具箱提供的擬合類型有:
Custom Equations:用戶自定義的函數(shù)類型
Exponential:指數(shù)逼近,有2種類型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
Fourier:傅立葉逼近,有7種類型,基礎(chǔ)型是 a0 + a1*cos(x*w) + b1*sin(x*w)
Gaussian:高斯逼近,有8種類型,基礎(chǔ)型是 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:有理數(shù)逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型
Smoothing Spline:平滑逼近(翻譯的不大恰當(dāng),不好意思)
Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎(chǔ)型是 a1*sin(b1*x + c1)
Weibull:只有一種,a*b*x^(b-1)*exp(-a*x^b)
選擇好所需的擬合曲線類型及其子類型,并進(jìn)行相關(guān)設(shè)置:
——如果是非自定義的類型,根據(jù)實(shí)際需要點(diǎn)擊“Fit options”按鈕,設(shè)置擬合算法、修改待估計(jì)參數(shù)的上下限等參數(shù);
——如果選Custom Equations,點(diǎn)擊“New”按鈕,彈出自定義函數(shù)等式窗口,有“Linear Equations線性等式”和“General Equations構(gòu)造等式”兩種標(biāo)簽。
在本例中選Custom Equations,點(diǎn)擊“New”按鈕,選擇“General Equations”標(biāo)簽,輸入函數(shù)類型y=a*x*x + b*x,設(shè)置參數(shù)a、b的上下限,然后點(diǎn)擊OK。
(5)類型設(shè)置完成后,點(diǎn)擊“Apply”按鈕,就可以在Results框中得到擬合結(jié)果,如下例:
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
同時(shí),也會(huì)在工具箱窗口中顯示擬合曲線。
這樣,就完成一次曲線擬合啦,十分方便快捷。當(dāng)然,如果你覺得擬合效果不好,還可以在“Fitting”窗口點(diǎn)擊“New fit”按鈕,按照步驟(4)~(5)進(jìn)行一次新的擬合。
不過,需要注意的是,cftool 工具箱只能進(jìn)行單個(gè)變量的曲線擬合,即待擬合的公式中,變量只能有一個(gè)。對(duì)于混合型的曲線,例如 y = a*x + b/x ,工具箱的擬合效果并不好。下一篇文章我介紹幫同學(xué)做的一個(gè)非線性函數(shù)的曲線擬合。
上邊對(duì)cftool工具箱做了很詳盡的說明,但并沒有對(duì)各種曲線擬合的性能做點(diǎn)評(píng),在單變量曲線擬合中,如何選取一種最優(yōu)化的擬合方式是非常重要的,我們?cè)诓捎肅FTOOL擬合后,會(huì)有一些性能說明,如:
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 due 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風(fēng)云博客
;t=1c=fks_084066080086083064084085083095087086083071083086086064
;fromSearchisFromSearchEngine=yes
Matlab曲線擬合
;fromSearchisFromSearchEngine=yes
多項(xiàng)式擬合函數(shù)polyfit之C語言的源碼
matlab二元函數(shù)擬合;
;cid=93index=2
matlab非線性擬合1(指數(shù)函數(shù))