2011-03-22 226 views
4

有數據指數衰減可用,我想通過它擬合曲線。我怎麼能在Matlab中做到這一點?在Matlab中通過數據點擬合指數曲線

+4

統計工具箱產品頁面上有一個很好的演示,討論如果將非線性模型轉換爲線性模型可能發生的問題。 http://www.mathworks.com/products/statistics/demos.html?file=/products/demos/shipping/stats/xform2lineardemo.html首選的方法是使用非線性迴歸;使用「線性化,最小二乘法,非線性化」技術導出一套「智能」起始條件。 – 2011-03-24 17:40:57

+3

Richard Willey的評論應該是(接受的)答案。在一些答案中推薦使用最小二乘法進行線性化和應用並不是一個好主意,因爲這種變換將給予小數值太多的權重。更好地使用nlinfit。 – Lukas 2012-03-26 12:54:11

+0

來自@richardwilley的鏈接已被MathWorks打破。更新版本似乎是[這裏](http://www.mathworks.com/help/stats/examples/curve-fitting-and-distribution-fitting.html)。 – horchler 2015-05-15 20:41:36

回答

5

試試這個:

ft=fittype('exp1'); 
cf=fit(time,data,ft) 

這是當timedata是您的數據向量;時間是自變量,數據是因變量。

這會給你指數衰減曲線的係數。

+0

嗨eggy,感謝編輯 – Adiel 2013-06-25 07:50:56

+0

如何計劃呢? – Ortix92 2014-12-11 11:53:42

+0

@Adiel當我嘗試這個時,我得到一個錯誤,因爲類型爲 'cfit'的輸入參數的'Undefined function'diff'。 錯誤CFIT /圖(64行) 如果任何(DIFF(擴展數據)<0) 錯誤slopeFirst2hours(6號線) 圖(時間,CF, 'R') '你能告訴我是什麼我做錯了 – clarkson 2017-09-05 11:23:08

2

如果通過擬合你的意思是最小平方,你應該試試lsqcurvefit

0

Matlab有一個稱爲polyfit的函數。它可以將曲線擬合成可以用a * X^n + b * X ^(n-1)+ ..... z形式表示的數據。但是,如果您確信數據呈指數衰減,則可以先嚐試取對數,然後使用polyfit函數。我會做的事情。

0

線性化,最小二乘法,delinearise :-)

+0

你是對的,雖然我認爲可能有一個包可以自動完成這個工作,但手動完成它可能會花費更少的時間,而不是搜索它:) – Ingo 2011-03-23 10:10:12

+0

這是一個很簡短的答案,但是我贊成它從-1開始,因爲它對沒有曲線擬合工具箱的用戶很有幫助。 – FvD 2015-01-06 08:11:38

1

cftool(X,Y)是要走的路。 這裏的一些鏈接:

LINK1 LINK2