我是MATLAB的新手,我有一个看起来非常明显的问题,但我不太明白该怎么做。
我们说我有100 x 100矩阵,它的等级是50.如何减小它的尺寸,使其为50 x 100?也就是说,如何消除那些对其排名没有贡献的行?
答案 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).';