2013-06-19 29 views
0

我有2组三维矢量N条目。我正在尝试计算最佳对齐第一组和第二组的旋转矩阵。计算2组矢量之间的旋转

我相信我可以使用java库JAMA来完成奇异值分解或特征值分解。

1)SVD或EVD是否使用正确的算法? 2)JAMA中的SVD/EVD需要矩阵。如何根据我的两组向量填充矩阵?

+0

建议最好以包括您的一些尝试代码,以便我们可以尝试并帮助您 – Jon

+0

我还没有能够尝试任何东西,因为我不知道如何填充调用JAMA功能所需的矩阵,或者如果这些JAMA功能是甚至可以调用适当的算法。 – user66332

回答

0

这里是什么,我相信你所描述的(将其转换成 3 d应该是简单的,除了M-矩阵将是3x3的和有 shftx/y/z项)2-d版本。

点(X,Y)的一个点的仿射变换(U, V)可以写成:

u m11 m12 x  shftx 
    =   *  + 
v m21 m22 y  shfty 

You can rewrite this as: 

x y 0 0 1 0  m11  u 
      *  = 
0 0 x y 0 1  m12  v 

       m21 

       m22 

       shftx 

       shfty 

之所以这样做,是你使基质上左边(具有 x/y/0/1值)的行数最多与数据集 中的点数相同。如果你把这个矩阵称为X,并且右边的列向量为U,那么问题就是找到方程X * m = U的最小二乘解m。你可以通过(新的QRDecomposition(X)).solve(U))来解决这个问题。我应该说在QR分解的 至少一个版本有一个在代码中的错误,这是 假设用于溶液基质中的错误的尺寸,但是我固定它通过 在解决()方法改变一个线。