【发布时间】:2010-08-21 21:19:09
【问题描述】:
假设您有一个满秩的NxM 矩阵A,其中M>N。如果我们用C_i 表示列(维度为Nx1),那么我们可以将矩阵写为
A = [C_1, C_2, ..., C_M]
如何获得原始矩阵A的第一个线性独立列,以便可以构造一个新的NxN矩阵B,它是一个具有非零行列式的可逆矩阵。
B = [C_i1, C_i2, ..., C_iN]
如何在 matlab 或 python numpy 中找到索引 {i1, i2, ..., iN}?这可以使用奇异值分解来完成吗?代码 sn-ps 将非常受欢迎。
编辑: 为了使这一点更具体,请考虑以下 python 代码
from numpy import *
from numpy.linalg.linalg import det
M = [[3, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 1],
[0, 2, 0, 0, 0]]
M = array(M)
I = [0,1,2,4]
assert(abs(det(M[:,I])) > 1e-8)
所以给定一个矩阵 M,我们需要找到一组 N 线性独立的列向量的索引。
【问题讨论】:
标签: python matlab numpy linear-algebra svd