matlab中如何去掉导致矩阵不满秩的行或者列

使用matlab中的rank查找矩阵的秩,发现该矩阵未满秩,由于是一个维度较大的矩阵,而下一步操作需要保证该矩阵是满秩的,所以想求问有没有什么方法能够查找导致未满秩的行或者列,然后我就可以考虑一些方法改进。。。。谢谢各位大虾

1个回答

解决思想:求出原矩阵的行向量组的极大无关组,然后用极大无关组组成的矩阵代替原行不满秩的矩阵即得到您想要的结果。
MATLAB代码如下:
M=size(H,1);
while rank(H)~=M %当构造出的H不是行满秩时,找出它行向量组的极大无关组组成newH代替H
[R,jb]=rref(H'); %结果中R为rref函数中目标矩阵的行阶梯最简矩阵,jb是一个向量,为目标矩阵的列极大无关组所在的列数。注意这里需要先将H转置,因为我们的目标是要求H的行向量组的极大无关组
newH=H(jb,:);
H=newH;
M=size(H,1);
end
亲测有效,望有用。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问