當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.orthogonal_procrustes用法及代碼示例


本文簡要介紹 python 語言中 scipy.linalg.orthogonal_procrustes 的用法。

用法:

scipy.linalg.orthogonal_procrustes(A, B, check_finite=True)#

計算正交 Procrustes 問題的矩陣解。

給定形狀相同的矩陣 A 和 B,使用 [1] 中給出的算法找到一個最接近將 A 映射到 B 的正交矩陣 R。

參數

A (M, N) 數組

要映射的矩陣。

B (M, N) 數組

目標矩陣。

check_finite 布爾型,可選

是否檢查輸入矩陣是否僅包含有限數。禁用可能會提高性能,但如果輸入確實包含無窮大或 NaN,則可能會導致問題(崩潰、非終止)。

返回

R (N, N) 數組

正交 Procrustes 問題的矩陣解。最小化 (A @ R) - B 的 Frobenius 範數,以 R.T @ R = I 為準。

scale 浮點數

A.T @ B 的奇異值之和。

拋出

ValueError

如果輸入數組形狀不匹配,或者如果 check_finite 為 True 並且數組包含 Inf 或 NaN。

注意

請注意,與更高級別的 Procrustes 空間數據分析不同,此函數僅使用正交變換,如旋轉和反射,而不使用縮放或平移。

參考

[1]

Peter H. Schonemann,“正交 Procrustes 問題的通用解決方案”,Psychometrica - Vol. 1。 31,第 1 期,1966 年 3 月。DOI:10.1007/BF02289451

例子

>>> import numpy as np
>>> 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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.orthogonal_procrustes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。