3

我有一个 n > m 的 amxn 矩形矩阵 A。给定 A 的秩 r <= m,简化的 QR 分解产生具有 mxr 维的矩阵 Q,以及具有 rxn 维的 R。Q 的列是 A 范围的正交基。R 将是上三角形,但呈阶梯状。R 中带有枢轴的列对应于 A 中的独立列。

当我从 numpy.linalg 应用 qr 函数时(在 scipy.linalg 中也有这个函数的一个版本,这似乎是相同的),它返回矩阵 Q 具有 mxm 维度,以及 R 具有 mxn 维度,即使排名为矩阵 A 小于 m。这似乎是“完整”的 QR 分解,其中 Q 的列是 Re^m 的正交基。是否可以通过 numpy.linalg;scipy.linalg 中函数 qr 返回的这个 R 矩阵来识别 A 的独立列?

4

1 回答 1

1

检查 R 的非零对角元素:

import numpy as np
min_tol = 1e-9
A = np.array([[1,2,3],[4,3,2],[1,1,1]])
print("Matrix rank of: {}".format(np.linalg.matrix_rank(A)))
Q,R = np.linalg.qr(A)
indep = np.where(np.abs(R.diagonal()) >  min_tol)[0]
print(A[:, indep])
print("Independent columns are: {}".format(indep))

另见此处: 如何在协方差矩阵中找到退化的行/列

于 2014-08-24T20:47:16.977 回答