1.確定要擬合的類型
一般情況下matlab會直接提供常用的類型,用fittype創建擬合模型。至於matlab具體提供了哪些模型,參見幫助"List of library models for curve and surface fitting"
ft = fittype( 'gauss1' ); %高斯擬合
如果庫中沒有自己想要的擬合形式,可以自己進行定義,此時使用匿名函數是很方便的,格式如下
ft = fittype(@(a,b,c,x) a*x^3 + b*x^2 +c*x );
使用自定義擬合形式需要注意幾點:
- 自變量必須是x
- 參數要放在自變量前面,在上面的例子中,匿名函數參數的形式為(a, b, c, x),便遵循了這一規則
2.要擬合的數據格式
在最簡單的情況下,即擬合兩個向量X,Y,則其必須是列向量
3.擬合
使用fit進行擬合
fitresult= fit( xData, yData, ft);
其輸出fitresult是一個cfit型的對象(object),主要包含兩個內容:1,擬合模型,即第一步中確定的擬合類型;2,擬合所得系數的值。例如對第一步中所創建的高斯模型,其fitresult 的值為
fitresult = General model Gauss1: fo(x) = a1*exp(-((x-b1)/c1)^2) Coefficients (with 95% confidence bounds): a1 = 45.54 (42.45, 48.64) b1 = 0.01011 (0.0101, 0.01012) c1 = 0.0002551 (0.0002353, 0.0002748)
獲得了這樣一個object,如何把其中的系數提取出來呢?這個要用到coeffvalues函數
>> coeffvalues(fitresult) ans = 45.5426 0.0101 0.0003
4.獲取擬合優度
現在已經獲得了擬合系數,那到底擬合得怎么樣呢?可以使用下面的格式獲取擬合優度
[fitresult ,gof] = fit(X,Y,'gauss1');
gof是一個結構體,包含4個量
sse:Sunm of squares due to error
rsquare:R-square 這個就是線性回歸里的那個R2,與線性回歸里的具有同樣的意義
dfe:Degrees of freedom in the error,不懂
adjrsquare: 也不懂
rmse: 誤差的均方根值(rms)
暫時只需要用到這些,更高級的要用的時候再說。