一尘不染

3D最小二乘飞机

algorithm

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


阅读 170

收藏
2020-07-28

共1个答案

一尘不染

如果您有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个元素向量b:

{sum_i x[i]*z[i],   sum_i y[i]*z[i],    sum_i z[i]}

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

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

还请注意,如果您的点与示例点相同,则这将失败。

2020-07-28