大家好,最近在做一个数学仿真,需要对一个行向量进行剔除0元素的处理,因此学习了all函数和any函数的使用方法,希望能帮到遇到相同问题的朋友。
首先介绍all函数和any函数的使用,然后给出实例帮助大家理解,最后是我使用的剔除向量中0元素的代码
一. 函数介绍
1. all函数
检测矩阵中某行或者某列是否全为非零元素,如果是,则返回1,否则,返回0。
下面具体进行一下展示
%运行如下代码,演示all函数
y = [1,1,1,0;2,2,2,0;0,0,0,0;2,0,2,0]
Y1 = all(y,1)
%{用于检测每一列是否全为非零元素,如果某一列中有一个元素为零,则返回0,
如果某一列中全为非零元素,则返回1,由此构成一个行向量。
%}
Y2 = all(y,2)
%{用于检测每一行是否全为非零元素,如果某一行中有一个元素为零,则返回0,
如果某一行中全为非零元素,则返回1,由此构成一个列向量。
%}
%得到结果为
>>
y =
1 1 1
2 2 2
0 0 0
2 0 2
Y1 =
0 0 0
Y2 =
1
1
0
0
2. any函数
如果 A 为非空非向量矩阵,B = any(A) 将 A 的各列视为向量,返回包含逻辑 1 和 0 的行向量。
y = [1,0,0;2,2,0;0,0,0]
Y=any(y)
%得到结果
>>
y =
1 0 0
2 2 0
0 0 0
Y =
1 1 0
二. 剔除0元素
基本思想就是利用all函数找到0元素,然后设为空,对于行向量找到0元素对应的列;对于列向量则找到0元素对应的行即可,代码如下
%删除全0行
a(all(a==0,2),:) = [];
%删除全0列
a(:,all(a==0,1))= []
演示实例
A = [1,0,0,2,0,0,3,0,4]
A(:,all(A==0,1))= []
B = [1,0,0,2,0,0,3,0,4]'
B(all(B==0,2),:)= []
>>
A =
1 0 0 2 0 0 3 0 4
A =
1 2 3 4
B =
1
0
0
2
0
0
3
0
4
B =
1
2
3
4
这样我们就可以轻松剔除0元素,以供后续处理!!
不足之处还请多指正!!