Matlab是Matrix Laboratory 的结合拼写。是一个强大的数学处理、计算工具。掌握matlab对我们的学习和研究帮助会很大。
今天的问题是:怎么删除全零的行和列?
方法/步骤
-
1
这个问题中,最重要的函数是any
any函数的解释是:如果一个向量的所有元素都非零,那么返回1.
(True if any element of a vector is a nonzero number or is logical 1 (TRUE). )
-
2
比如,我们先生成一个矩阵A
a1=0:3;a2=rand(1,4);
A1=[a1;a2;a1+a2];
A2=zeros(3,4);
A=[A1;A2;a1;zeros(1,4)]
那么A的数值是:
A =
0 1.0000 2.0000 3.0000
0.8214 0.4447 0.6154 0.7919
0.8214 1.4447 2.6154 3.7919
0 0 0 0
0 0 0 0
0 0 0 0
0 1.0000 2.0000 3.0000
0 0 0 0
可见有几个全零的行;根据any的定义,它找的是所有全零列,所以可以先把A转置后,看有哪些列是全零的。
-
3
GetA=A(any(A'),:) %any(A')得到A非零行数值
GetA =
0 1.0000 2.0000 3.0000
0.8214 0.4447 0.6154 0.7919
0.8214 1.4447 2.6154 3.7919
0 1.0000 2.0000 3.0000
-
4
如果A有全零的列,比如B=A‘。如何去掉B的全零列?
用:GetB=B(:,any(B))这样any(B)挑出的是所有不全为0的列的值
END
文章评论