如何消除不对其排名做出贡献的矩阵行?

时间:2015-01-19 17:38:06

标签: matlab matrix

我是MATLAB的新手,我有一个看起来非常明显的问题,但我不太明白该怎么做。

我们说我有100 x 100矩阵,它的等级是50.如何减小它的尺寸,使其为50 x 100?也就是说,如何消除那些对其排名没有贡献的行?

1 个答案:

答案 0 :(得分:6)

您可以使用rref确定矩阵中的哪些列形成column space,从而确定哪些向量确定矩阵的等级。鉴于您正在检查A的矩阵,您可以这样调用rref

[R,RB] = rref(A);

R将您的矩阵分解为row-reduced echelon form,而RB表示构成矩阵A基础的列索引。因此,为了寻求你所要求的,你只需要做:

Areduced = A(:,RB);

Areduced将是仅包含形成A列空间的基础向量的矩阵,从而减少矩阵A,使其仅包含允许的列你的矩阵是满级。


但是,从您的问题来看,您希望沿行操作而不是列。因此,您可以先转置矩阵,对结果使用rref,然后在完成后转置:

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