有時候我們需要對一些散點進行擬合,但是經常會發(fā)現(xiàn)對于未知曲線類型的散點擬合無從下手,常規(guī)的方法就是嘗試各種擬合曲線,然后選出最優(yōu)的,但是問題就來了,對這么多的曲線編寫程序豈不是累死?
幸好有Matlab!幸好有cftool!
我們可以先把數(shù)據導入matlab,如:
x = [8.8,9.4,9.6,7.8,8.5,6.2,11,12.5,12.8,13.4,11,12.1,10.8,10.1,13,12,10.6,10,10.8,12.6,12,13,11.7,17.4,17.2,15.2,14,15.1,14.6,14,17.4,16.2,15.4,14,20.5,19.2,20,18,20,19.5,19.8,19.7,19.7,21.6,24.6,22,22,25,24.8,27,28.5,29.2,27.3,31,31,39]
y = [0.0296,0.035,0.04,0.022,0.036,0.0153,0.0534,0.1064,0.1133,0.122,0.076,0.1082,0.0704,0.0484,0.0926,0.108,0.0458,0.0391,0.0642,0.0981,0.0886,0.077,0.0914,0.1053,0.196,0.1637,0.112,0.1449,0.153,0.1181,0.1913,0.2268,0.1537,0.1024,0.277,0.2974,0.2664,0.1784,0.3014,0.2075,0.2724,0.2899,0.256,0.2493,0.4486,0.3494,0.2536,0.498,0.4839,0.4605,0.7285,0.8039,0.6058,0.8141,0.7751,1.3157]
輸入cftool,回車,打開Curve Fitting tool工具箱
在這里面選擇數(shù)據來源,并選擇函數(shù)名稱,即可進行擬合,matlab會提供函數(shù)和誤差。接下來選最好的函數(shù)就行了!
參考如圖:

注:工具箱提供的擬合類型如下,進行簡要說明,可以嘗試各種不同類型擬合效果
- Custom Equations:用戶自定義的函數(shù)類型
- Exponential:指數(shù)逼近,有2種類型, aexp(bx) 、 aexp(bx) + cexp(dx)
- Fourier:傅立葉逼近,有7種類型,基礎型是 a0 + a1cos(xw) + b1sin(xw)
- 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種類型,ax^b 、ax^b + c
- Rational:有理數(shù)逼近,分子、分母共有的類型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子還包括constant型
- Smoothing Spline:平滑逼近(翻譯的不大恰當,不好意思)
- Sum of Sin Functions:正弦曲線逼近,有8種類型,基礎型是 a1sin(b1x + c1)
Weibull:只有一種,abx(b-1)*exp(-a*xb)