MATLAB中三维空间中的非线性最小二乘?

时间:2014-06-29 12:20:14

标签: matlab curve-fitting least-squares surface

对于2D空间,我使用了 lsqcurvefit 。但是对于3D空间我还没有找到任何简单的功能。

我想要适合的功能有这样的形式:

z = f(x,y)= a + b * x + c * e ^( - y / d)

我想知道是否有任何工具箱或函数来拟合这种数据,至少是方形意义。或者可以以某种方式使用 lsqcurvefit 吗?

否则我想我必须自己写点东西。回到理论阅读我想。

所以,任何帮助都将受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

lsqcurvefit应该能够处理问题中给出的功能。我现在没办法验证这个代码,但我相信它应该可行:

clear variables

f = @(p, x)(p(1)+p(2)*x(:, 1)+p(3)*e.^(-x(:, 2)/p(4)));

xydata = [ 0 0 ; 1 1 ; 2 2 ; 3 3 ];
zdata = [ 0 ; 1 ; 2 ; 3 ];

x = lsqcurvefit(f, [ 0 0 0 0 ], xydata, zdata);