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


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


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

用法:

scipy.linalg.subspace_angles(A, B)#

計算兩個矩陣之間的子空間角度。

參數

A (M, N) 數組

第一個輸入數組。

B (M, K) 數組

第二個輸入數組。

返回

angles ndarray,形狀(min(N,K),)

A 和 B 的列空間之間的子空間角度按降序排列。

注意

這將根據 [1] 中提供的公式計算子空間角度。要與 MATLAB 和 Octave 行為等效,請使用 angles[0]

參考

[1]

Knyazev A, Argentati M (2002) 基於 A 的標量積中子空間之間的主角:算法和擾動估計。暹羅學家科學。計算。 23:2008-2040。

例子

具有正交列的 Hadamard 矩陣,因此我們期望超空間角為

>>> import numpy as np
>>> from scipy.linalg import hadamard, subspace_angles
>>> rng = np.random.default_rng()
>>> H = hadamard(4)
>>> print(H)
[[ 1  1  1  1]
 [ 1 -1  1 -1]
 [ 1  1 -1 -1]
 [ 1 -1 -1  1]]
>>> np.rad2deg(subspace_angles(H[:, :2], H[:, 2:]))
array([ 90.,  90.])

並且矩陣與其自身的子空間角度應該為零:

>>> subspace_angles(H[:, :2], H[:, :2]) <= 2 * np.finfo(float).eps
array([ True,  True], dtype=bool)

非正交子空間之間的角度介於這些極端之間:

>>> x = rng.standard_normal((4, 3))
>>> np.rad2deg(subspace_angles(x[:, :2], x[:, [2]]))
array([ 55.832])  # random

相關用法


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