给定一组3D数据点,在(x,y,z)空间中计算最小二乘平面的算法是什么?换句话说,如果我有一堆点,例如(1、2、3),(4、5、6),(7、8、9)等,那么如何去计算最佳拟合平面f (x,y)= ax + by + c?从一组3D点中提取a,b和c的算法是什么?

最佳答案

如果您有n个数据点(x [i],y [i],z [i]),则计算3x3对称矩阵A,其条目为:

sum_i x[i]*x[i],    sum_i x[i]*y[i],    sum_i x[i]
sum_i x[i]*y[i],    sum_i y[i]*y[i],    sum_i y[i]
sum_i x[i],         sum_i y[i],         n

还要计算3个元素 vector b:
{sum_i x[i]*z[i],   sum_i y[i]*z[i],    sum_i z[i]}

然后针对给定的A和b求解Ax = b。解 vector 的三个分量是最小二乘拟合平面{a,b,c}的系数。

请注意,这是“普通最小二乘”拟合,仅当预期z是x和y的线性函数时才适用。如果您更一般地寻找3空间中的“最佳拟合平面”,则可能需要了解“几何”最小二乘法。

还要注意,如果您的点在一条直线上,这将失败,例如您的示例点。

10-06 00:28