scipy.linalg.orthogonal_procrustes¶
- scipy.linalg.orthogonal_procrustes(A, B, check_finite=True)[源代码]¶
计算正交Procrstes问题的矩阵解。
在给定相同形状的矩阵A和B的情况下,使用中给出的算法找出最接近地将A映射到B的正交矩阵R [1].
- 参数
- A(M,N)类数组
要映射的矩阵。
- B(M,N)类数组
目标矩阵。
- check_finite布尔值,可选
是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。
- 退货
- R(N,N)ndarray
正交Procrstes问题的矩阵解的Frobenius范数最小化
(A @ R) - B
,在符合以下条件的情况下R.T @ R = I
。- scale浮动
的奇异值之和
A.T @ B
。
- 加薪
- ValueError
如果输入数组形状不匹配,或者Check_Finite为True,并且数组包含inf或NaN。
注意事项
请注意,与空间数据的高级Procrstes分析不同,此函数仅使用旋转和反射等正交变换,并且不使用缩放或平移。
0.15.0 新版功能.
参考文献
- 1
Peter H.Schonemann,“正交Procrstes问题的广义解”,“心理计量学”--第31卷,第1期,1996年3月。
示例
>>> from scipy.linalg import orthogonal_procrustes >>> A = np.array([[ 2, 0, 1], [-2, 0, 0]])
反转列顺序并检查反对角线映射
>>> R, sca = orthogonal_procrustes(A, np.fliplr(A)) >>> R array([[-5.34384992e-17, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 0.00000000e+00, -7.85941422e-17]]) >>> sca 9.0