2013-10-06 41 views
0

我給出了x,y和z的數據。我想,如下所述,以適應一組數據到功能形式的模型:MATLAB中的nlinfit命令

z(x, y) = c0*x^o*y2 + c1*x^1*y^1 + c2 *x^2*y^1 

其中C0,C1,C2是係數被發現。 我的嘗試是使用nlinfit函數來解決它。

到目前爲止,我已經嘗試

x= [ 0.001, .. 0.011]; 

y = [1, .. 10]; 

z = [ -.304860225 .. .379710865]; 

my_model= c0 * x^0 * y^2 + c1 * x^1 * y^1 + c2 * x^2 * y^0 

[c0 c1 c2] = [1 2 3]; 

C= nlinfit([x,y], z, @ my_model, [1 2 3]) 

這裏xy是自變量和z是因變量。 如何設置這些係數的初始值? 我不知道如何通過nlinfit函數中的參數。幫幫我!!!

回答

2

您的模型是LINEAR w.r.t c0c1c2。這裏沒有理由使用nlfit

您需要爲您的xy數據構建一個Vandermonde matrix並使用反斜槓來恢復係數。

它不是從你的問題的模式是什麼100%的清楚,所以我會假設:

z(x,y) = c0 * x^nx0 * y^ny0 + c1 * x^nx1 * y^ny1 + c2 * x^nx2 * y^ny2 

nx0nx1nx2ny0ny1ny2給出先驗已知的。

您將得到m點,這是一個m - 載體xyz,而您希望extimate c0c1c2給這三個m - 載體。

的Vandermonde矩陣這個模型是

V = [ (x(:).^nx0).*(y(:).^ny0), (x(:).^nx1).*(y(:).^ny1), (x(:).^nx2).*(y(:).^ny2) ]; 

現在注意你的模型是線性:V*c = z爲右c = [c0; c1; c2]

要恢復c(在最小平方意義上)

c = V \ z 
+0

感謝回答。我只是勉強爲c0,c1,c2增加了值。如何設置這些係數的初始值?我必須執行非線性曲線擬合 – Syeda

+0

@Syeda你的曲線可能是非線性的,但擬合是線性的! – Shai

+0

@ Shai ..所以,在我的情況下,沒有必要使用nlfit函數?我在MATLAB中運行這個代碼。你能幫我理解爲什麼我得到這個錯誤嗎? 「???未定義的函數或變量'c0'」 – Syeda