2010-06-30 70 views

回答

1

可以重寫lsqcurvefit的問題,但爲什麼不直接使用lsqnonlin,因爲lsqcurvefit不過是lsqnonlin的包裝?

假設您有陣列xx,yy,zz,它定義了您的2D表面,以便surf(xx,yy,zz)繪製表面。

然後,創建一個功能objectiveFunction(params,xx,yy,zz),對於在每一個座標爲xxyyparams定義的參數定義的估計zz,並返回zz和功能輸出之間的差的向量。

最後,你分配給數組initialGuess爲參數的一些初始猜測,並調用lsqnonlin這樣的:

estimatedParameters = lsqnonlin(@(params)objectiveFunction(params,xx,yy,zz),initialGuess) 
0

您需要定義一個函數擬合到2-d數組你是什麼意思。您是否希望將某個曲面作爲該列中的行和列索引的函數進行擬合?

如果是,則使用meshgrid生成行列索引的矩形陣列。現在你可以在你的功能中使用它們。使用函數句柄將它們直接傳遞給目標函數。不要忘記在函數中使用元素運算符來乘法(。*),除法(./)和冪(。^)。

模型的實際選擇當然是您的選擇。

至於使用lsqcurvefit(與lsqnonlin相反),它們本質上是一樣的,但界面略有不同。