2016-04-28 136 views
0

我試圖擬合呈指數遞減的數據。如果我使用cftools來擬合單項指數函數,那我就很合適。然而,當我嘗試使用fit功能:指數擬合和cftools在Matlab中給出不同的結果

f = fit(x, y, 'exp1'); 

它給了我下面的錯誤:

Warning: NaN, Inf, or complex value detected in startpoint; 
choosing random starting point instead. 
> In curvefit.attention.Warning/throw (line 30) 
    In fit>iFit (line 299) 
    In fit (line 108) 

和係數它給最終會被垃圾。

我以爲cftools正在運行fit。爲什麼有差異?我如何從腳本運行cftools

+2

沒有數據可能很難猜測。您*可以*查看「File> Generate Code」下的'cftool'使用的代碼。看起來有一個區別可能是'cftool'爲你選擇了初始值。您可以使用'fitoptions(model)'檢查擬合模型的選項。 – alexforrence

回答

3

爲什麼不只是做錯誤建議?

f = fit(x, y, 'exp1', 'StartPoint', rand); 

你可能想改變rand是一個更明智的第一個猜測,但將完全取決於你的問題域。

否則cftools應該有一個code generation功能,該功能可以打印出MATLAB代碼,該代碼複製與工具交互操作的任何內容,以便將來以編程方式運行它。這是一個開始的好方法。

+0

即使我設置了起始點,我基本上也會得到'f(x)= 0'。我將研究'cftools'的代碼生成功能。謝謝。 – sodiumnitrate