大家好,最近在做一个数学仿真,需要对一个行向量进行剔除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 =111222000202Y1 =000Y2 =1100
2. any函数
如果 A 为非空非向量矩阵,B = any(A) 将 A 的各列视为向量,返回包含逻辑 1 和 0 的行向量。
y = [1,0,0;2,2,0;0,0,0]Y=any(y)%得到结果>>y =100220000Y =110
二. 剔除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 =10004A =1234B =10004B =1234
这样我们就可以轻松剔除0元素,以供后续处理!!
不足之处还请多指正!!