2010-06-30 66 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相反),它们本质上是一样的,但界面略有不同。