如何消除矩阵中对其排名没有贡献的行?

How do I eliminate the rows of my matrix that don't contribute to its rank?

我是 MATLAB 的新手,我有一个问题看起来很明显,但我不太明白如何去做。

假设我有一个 100 x 100 的矩阵,它的秩为 50。我怎样才能减小它的尺寸,使其变为 50 x 100?也就是说,如何消除那些对其排名没有贡献的行?

您可以使用 rref to determine which columns in your matrix form the column space,因此哪些向量决定了矩阵的秩。给定您正在检查的矩阵 A,您可以这样调用 rref

[R,RB] = rref(A);

R 会将您的矩阵分解为 row-reduced echelon form,而 RB 表示构成矩阵 A 基础的列索引。因此,要查找您要查询的内容,您只需执行以下操作:

Areduced = A(:,RB);

Areduced 将是仅由构成 A 列 space 的那些基向量组成的矩阵,因此减少矩阵 A 以便它只由那些允许您的矩阵满秩的列组成。


但是,根据您的问题判断,您想沿行而不是列进行操作。因此,您可以先转置矩阵,对结果使用 rref,然后在完成后转回:

Atranspose = A.';
[R,RB] = rref(Atranspose);
Areduced = Atranspose(:,RB).';