如何使用lsqcurvefit将2D函数拟合到2D数组?
答案 0 :(得分:1)
有可能为lsqcurvefit重新解决问题,但为什么不直接使用lsqnonlin,因为lsqcurvefit只是lsqnonlin的包装器?
假设您有阵列xx
,yy
,zz
,它们定义了您的2D表面,以便surf(xx,yy,zz)
绘制曲面。
然后,您创建一个函数objectiveFunction(params,xx,yy,zz)
,根据zz
中定义的参数xx
和yy
中定义的每个坐标估算params
返回zz
与函数输出之间差异的向量。
最后,您为数组initialGuess
分配一些参数的初始猜测,然后像这样调用lsqnonlin
:
estimatedParameters = lsqnonlin(@(params)objectiveFunction(params,xx,yy,zz),initialGuess)
答案 1 :(得分:0)
您需要通过将函数拟合到二维数组来定义您的意思。您是否希望将某些曲面作为行和列索引的函数放入该数组中?
如果是,则使用meshgrid生成行和列索引的矩形数组。现在您可以在函数中使用它们。使用函数句柄将它们直接传递给目标函数。不要忘记在函数中使用元素运算符进行乘法(。*),除法(./)和幂(。^)。
当然,您可以选择实际的模型选择。
至于使用lsqcurvefit(与lsqnonlin相反),它们基本相同,但界面略有不同。