Lsqcurvefit用于2D数据

时间:2010-06-30 18:14:42

标签: matlab

如何使用lsqcurvefit将2D函数拟合到2D数组?

2 个答案:

答案 0 :(得分:1)

有可能为lsqcurvefit重新解决问题,但为什么不直接使用lsqnonlin,因为lsqcurvefit只是lsqnonlin的包装器?

假设您有阵列xxyyzz,它们定义了您的2D表面,以便surf(xx,yy,zz)绘制曲面。

然后,您创建一个函数objectiveFunction(params,xx,yy,zz),根据zz中定义的参数xxyy中定义的每个坐标估算params返回zz与函数输出之间差异的向量。

最后,您为数组initialGuess分配一些参数的初始猜测,然后像这样调用lsqnonlin

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

答案 1 :(得分:0)

您需要通过将函数拟合到二维数组来定义您的意思。您是否希望将某些曲面作为行和列索引的函数放入该数组中?

如果是,则使用meshgrid生成行和列索引的矩形数组。现在您可以在函数中使用它们。使用函数句柄将它们直接传递给目标函数。不要忘记在函数中使用元素运算符进行乘法(。*),除法(./)和幂(。^)。

当然,您可以选择实际的模型选择。

至于使用lsqcurvefit(与lsqnonlin相反),它们基本相同,但界面略有不同。