我刚接触MATLAB并有一个看起来很明显的问题,但我不太明白如何解决。
假设我有一个100 x 100的矩阵,它的秩是50。我怎样才能将其维度降低为50 x 100呢?也就是说,我如何消除那些对它的秩没有贡献的行呢?
rref
来确定矩阵中哪些列组成了 列空间,从而确定哪些向量决定了矩阵的秩。给定你要检查的矩阵 A
,你可以这样调用 rref
:[R,RB] = rref(A);
R
是将您的矩阵分解为行简化阶梯形式,而 RB
表示形成矩阵 A
基础的列索引。因此,要寻求您所需的内容,您只需执行以下操作:
Areduced = A(:,RB);
Areduced
将是仅由形成矩阵A
的列空间的那些基向量组成的矩阵,因此它将减少您的矩阵A
,使其仅包含允许您的矩阵具有完全秩的那些列。
rref
,然后在完成后再转置回来:Atranspose = A.';
[R,RB] = rref(Atranspose);
Areduced = Atranspose(:,RB).';
Areduced = A(:,RB);
。不过,你说你想要沿着行操作,所以你现在做的还不太正确。请看我的更新答案。 - rayryeng
A=[1,0; 1,1; 0,1]
。你可以选择任意两行的组合,它们都可以满足你的问题。从某种意义上说,所有这些行都对排名有贡献,只是不是同时贡献! - knedlsepp