在 MATLAB 上查找矩阵的 m 线性独立列

Finding m-linearly independent columns of a matrix on MATLAB

让我们有一个线性系统 Ax<= b。为了找到这个多面体集合的一个顶点,我们需要选择 A 的 m 个线性无关列,并用相应的变量求解系统。如何使用 MATLAB 生成 all 个 m 线性无关列?然后我会找到我拥有的多面体的所有顶点。

我能想到的是:生成所有的(n,m)子集组合。一一排查。每当秩为 =m 时,采用这些解,因为它们具有完整的 m 秩。有没有更有效的方法?

要找到线性无关的列,您可以使用 eigqr

对于eig,特征值等于零表示非独立列

对于qr,R矩阵对角线上的零表示非独立列

例如:

mat2 =
 1     1     1
 1     1     1
 0     0     2

qr 给出

R =
-1.414213562373095  -1.414213562373095  -1.414213562373095
               0                   0                   0
               0                   0   2.000000000000000

eig给出

ans =
 2
 0
 2