给定一组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空间中的“最佳拟合平面”,则可能需要了解“几何”最小二乘法。
还要注意,如果您的点在一条直线上,这将失败,例如您的示例点。