[轉]matlab 中fit fittype

https://www.cnblogs.com/CherryWull/p/5574277.htmlhtml

1.肯定要擬合的類型dom

  通常狀況下matlab會直接提供經常使用的類型,用fittype建立擬合模型。至於matlab具體提供了哪些模型,參見幫助"List of library models for curve and surface fitting"ide

ft = fittype( 'gauss1' ); %高斯擬合

  若是庫中沒有本身想要的擬合形式,能夠本身進行定義,此時使用匿名函數是很方便的,格式以下函數

ft = fittype(@(a,b,c,x) a*x^3 + b*x^2 +c*x );

  使用自定義擬合形式須要注意幾點:post

  • 自變量必須是x
  • 參數要放在自變量前面,在上面的例子中,匿名函數參數的形式爲(a, b, c, x),便遵循了這一規則

2.要擬合的數據格式spa

  在最簡單的狀況下,即擬合兩個向量X,Y,則其必須是列向量  (通常定義都是行向量,使用轉置 a‘)code

3.擬合htm

 使用fit進行擬合對象

fitresult= fit( xData, yData, ft);

  其輸出fitresult是一個cfit型的對象(object),主要包含兩個內容:1,擬合模型,即第一步中肯定的擬合類型;2,擬合所得係數的值。例如對第一步中所建立的高斯模型,其fitresult 的值爲blog

複製代碼
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)

  暫時只須要用到這些,更高級的要用的時候再說。

 
分類: Matlab
相關文章
相關標籤/搜索