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

Yae*_*778 3 matlab matrix

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

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

ray*_*ica 6

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

[R,RB] = rref(A);
Run Code Online (Sandbox Code Playgroud)

R将您的矩阵分解为行减少的梯形形式,同时RB表示构成矩阵基础的列索引A.因此,为了寻求你所要求的,你只需要:

Areduced = A(:,RB);
Run Code Online (Sandbox Code Playgroud)

Areduced将是仅由那些形成列空间的基础向量组成的A矩阵,从而减少矩阵A,使其仅包含允许矩阵满列的那些列.


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

Atranspose = A.';
[R,RB] = rref(Atranspose);
Areduced = Atranspose(:,RB).';
Run Code Online (Sandbox Code Playgroud)