scipy.linalg.subspace_angles¶
- 
scipy.linalg.subspace_angles(A, B)[source]¶
- Compute the subspace angles between two matrices. - Parameters
- A(M, N) array_like
- The first input array. 
- B(M, K) array_like
- The second input array. 
 
- Returns
- anglesndarray, shape (min(N, K),)
- The subspace angles between the column spaces of A and B in descending order. 
 
 - Notes - This computes the subspace angles according to the formula provided in [1]. For equivalence with MATLAB and Octave behavior, use - angles[0].- New in version 1.0. - References - 1
- Knyazev A, Argentati M (2002) Principal Angles between Subspaces in an A-Based Scalar Product: Algorithms and Perturbation Estimates. SIAM J. Sci. Comput. 23:2008-2040. 
 - Examples - A Hadamard matrix, which has orthogonal columns, so we expect that the suspace angle to be \(\frac{\pi}{2}\): - >>> from scipy.linalg import hadamard, subspace_angles >>> 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.]) - And the subspace angle of a matrix to itself should be zero: - >>> subspace_angles(H[:, :2], H[:, :2]) <= 2 * np.finfo(float).eps array([ True, True], dtype=bool) - The angles between non-orthogonal subspaces are in between these extremes: - >>> x = np.random.RandomState(0).randn(4, 3) >>> np.rad2deg(subspace_angles(x[:, :2], x[:, [2]])) array([ 55.832]) 
