在3D中为3D点数据拟合3D线?

zac*_*zap 8 java math 3d data-fitting

我花了相当多的时间试图找到一种简单的方法来做到这一点 - 理想情况下,一个神奇的图书馆存在于那里,它将采用我的3D数据点并使用正交的最佳拟合线返回2个点回归或最小二乘并且还返回拟合线的误差.这样的事情是否存在,若然,在哪里?

小智 10

这很容易做到,但要自己编写,你需要一个特征值求解器或奇异值分解.创建(x-xbar,y-ybar,z-zbar)数据的nx3矩阵A作为列.保存这些列的方法以供日后使用,我将其称为V0 = [xbar,ybar,zbar].

现在,计算A'*A的特征值和特征向量,即由A转置乘以A形成的3x3矩阵.

如果该数据位于R ^ 3中的一条线上,那么这些特征值中的一个将明显大于其他两个特征值.如果不是这样,则不能很好地估计正交回归线.

取与A'*A的最大特征值相关联的特征向量.然后,如果V是对应的特征向量,则将正交回归线定义为

V(t)= V0 + t*V.

该行上的任何点都可以由参数t的某个值给出.

或者,计算A的奇异值分解,并取右边的奇异向量,该向量对应于A的最大奇异值.

在任何一种情况下,如果您希望计算数据点的误差,这将被定义为与所讨论的线的正交距离.