0
我有2组三维矢量N条目。我正在尝试计算最佳对齐第一组和第二组的旋转矩阵。计算2组矢量之间的旋转
我相信我可以使用java库JAMA来完成奇异值分解或特征值分解。
1)SVD或EVD是否使用正确的算法? 2)JAMA中的SVD/EVD需要矩阵。如何根据我的两组向量填充矩阵?
我有2组三维矢量N条目。我正在尝试计算最佳对齐第一组和第二组的旋转矩阵。计算2组矢量之间的旋转
我相信我可以使用java库JAMA来完成奇异值分解或特征值分解。
1)SVD或EVD是否使用正确的算法? 2)JAMA中的SVD/EVD需要矩阵。如何根据我的两组向量填充矩阵?
这里是什么,我相信你所描述的(将其转换成 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分解的 至少一个版本有一个在代码中的错误,这是 假设用于溶液基质中的错误的尺寸,但是我固定它通过 在解决()方法改变一个线。
建议最好以包括您的一些尝试代码,以便我们可以尝试并帮助您 – Jon
我还没有能够尝试任何东西,因为我不知道如何填充调用JAMA功能所需的矩阵,或者如果这些JAMA功能是甚至可以调用适当的算法。 – user66332