Matrix 正交procrustes的怪异行为

Matrix 正交procrustes的怪异行为,matrix,reflection,rotation,orthogonal,procrustes,Matrix,Reflection,Rotation,Orthogonal,Procrustes,给定两个矩阵mat1和mat2,每个矩阵代表三维空间中的一组3个点,我想旋转mat2,使其使用正交procrustes匹配mat1: mat1 <- t(matrix(c(1.16, 0.21, 0.11, -0.78, -0.02, -0.73, -0.37, -0.18, 0.62), nrow=3)) mat2 <- t(matrix(c(0.40, -0.94, -0.05, -0.91, 0.24, -0.38, 0.51, 0.70, 0.43), nrow=3)) Q

给定两个矩阵
mat1
mat2
,每个矩阵代表三维空间中的一组3个点,我想旋转
mat2
,使其使用正交procrustes匹配
mat1

mat1 <- t(matrix(c(1.16, 0.21, 0.11, -0.78, -0.02, -0.73, -0.37, -0.18, 0.62), nrow=3))
mat2 <- t(matrix(c(0.40, -0.94, -0.05, -0.91, 0.24, -0.38, 0.51, 0.70, 0.43), nrow=3))

Q <- cds::orthprocr(mat1 , mat2)$Q
mat2_rotated <- mat2 %*% Q
我错在哪里?另外,当所考虑的矩阵已经拟合时,获得最优正交矩阵恒等式的方法是什么(可能是其他实现方式?)

注意,在上面的示例中,我注意到
mat2_rotated
对于
Q_2
旋转/反射是不变的:

sqrt(sum((mat2_rotated - (mat2_rotated %*% Q_2))^2)) # returns 1.400699e-15
sqrt(sum((mat2_rotated - (mat2_rotated %*% Q_2))^2)) # returns 1.400699e-15