我用SVD来查找两组点之间的旋转矩阵。我知道R = Transpose(U) * V
,但我不明白你和 V 代表什么,以及为什么这种乘法会导致旋转矩阵。
由于您的问题是理论性的,并且没有涉及任何程序或特定问题,因此您最好在MathOverflow中编写问题。
尽管如此,为了给你一个大致的想法,(你绝对应该用确凿的事实来加强(: 奇异值分解 (svd( 背后的线性代数本质上描述了(在最简单的情况下(当向量乘以矩阵时会发生什么。
在小尺度上,如果将向量(v(乘以矩阵(R(,则得到第二个向量(u(。除非矩阵"R"是酉的,否则你得到的新向量将具有与第一个不同的方向和大小。 换句话说,矩阵"R"在向量"v"上的乘积将产生向量"v"的旋转和拉伸(或压缩(,这将转换为向量"u"。
如果你让向量'u'是酉的,并把它乘以一个新的变量(σ(,保持其原始的大小,你基本上是在做:R·v=u·σ
在更大的尺度上,当v和u不再是向量而是大矩阵时,公式为:R·V=U·∑
使 'u' 成为酉矩阵有用的原因是酉矩阵有一个很酷的性质:有转置等于它们的逆矩阵!
因此,您可以将公式重新排列为:R=U·∑·V(转置(
因此,您可以使用此公式获得"旋转矩阵",其中 U 和 V(t( 是保存矢量方向的正交矩阵,∑保存所述矢量方向的大小(或奇异值(。
为了更详细的解释,我向你推荐这个讲座:讲座:奇异值分解(SVD(