2013-06-01 170 views
0

好日子,非線性模型擬合

我有下面的代碼在Matlab:

ds1 = 

    2.0709 -3.0379 
    3.1447 -1.4320 
    4.0650 -2.5355 

modelfun = @(b,w)(b(1)*10.^w+b(2)); 

beta0 = [1 1]; 

mdl = NonLinearModel.fit(ds1,modelfun,beta0); 

我想創建一個NonLinearModel擬合方程:Y =β(1)* 10^(w)+ beta(2),但是我最終會出現以下錯誤:

使用NonLinearModel.fit時出錯(第837行) 必須提供模型定義和模型係數的初始值。

任何想法?

回答

1

這是模型的一個要求嗎?我不確定這是我的第一選擇。

從繪製數據開始。 (沒有太多,是嗎?)一個簡單的二階多項式將是一個精確的擬合,因爲你有三個點。

y = c0 + c1*x + c2*x^2 

或者可能通過取得雙方的基準10日誌進行轉換對你更好。

這裏不需要非線性模型。但是,如果你確實需要一個,非線性解決方案需要一個起點是常識。他們試圖以迭代的方式邁向真正的解決方案,如果有的話。

There 可能不是一個解決方案,或者您可能選擇一個不好的起點,或者步長可能太小而無法及時完成,或者太大而無法跨越您想要的答案。

所有這些都是使非線性問題比線性問題困難得多的原因。

+0

謝謝,我已經改變了我的數據和p = polyfit(w1,y1,1);現在工作正常! – Pietair