【问题标题】:non linear least squares in 3D space in MATLAB?MATLAB中3D空间中的非线性最小二乘法?
【发布时间】:2015-08-22 02:35:31
【问题描述】:

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

我要拟合的函数具有如下形式:

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

我想知道是否有任何工具箱或功能可以以最小二乘的方式拟合此类数据。或者lsqcurvefit可以用在什么地方吗?

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

所以,任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 对这个函数使用 lsqcurvefit 有什么问题?它支持具有多个输入参数的函数。
  • 我这种情况你能告诉我怎么用吗?我尝试将 xdata 写为 2D 向量。 [1 2 3; 2 3 4] 希望它将输入作为 [x;y]。还有其他方法吗?

标签: matlab curve-fitting least-squares surface


【解决方案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);

【讨论】:

  • 它有效。但是 f 应该定义为f=@(ab,x) (ab(1)+ab(2).*x(:,1)+ab(3).*exp(-x(:,2)/ab(4)))。有时间的时候编辑一下。现在我知道我在尝试时做错了什么。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2014-12-23
  • 2012-02-10
相关资源
最近更新 更多