matlab中any()函数用法

一、帮助文档中的介绍

B = any(A) 沿着大小不等于 1 的数组 A 的第一维测试所有元素为非零数字还是逻辑值 1 (true)。实际上,any 是逻辑 OR 运算符的原生扩展。

二、解读

分两步走:

①确定维度;②确定运算规则

以下面二维数组为例

>> a=[0 0 0 0;0 0 0 1;0 0 1 0]
a =
     0     0     0     0
     0     0     0     1
     0     0     1     0

>> size(a)
ans =
     3     4

 1、维度:第一维不等于 1 维度的是d1,所以运算方向就是向下→最终size=【1,4】

2、运算:逻辑 OR 运算,也就是全0为0,否则为1

最总结果就是沿着d1(向下),使用或/OR运算对其进行处理

运算结果

>> any(a)
ans =
  1×4 logical 数组
   0   0   1   1

>> size(any(a))
ans =
     1     4

 运算结果符合预期,说明解读是正确的

三、验证

1、行向量

>> size([0 0 0])%注意第一个不等于1维度
ans =
     1     3

>>  size(any([0 0 0]))%说明方向
ans =
     1     1

>> any([0 0 0])%说明运算规则——全0为0
ans =
  logical
   0
>> size([0 0 1])%注意第一个不等于1维度
ans =
     1     3

>>  size(any([0 0 1]))%说明方向
ans =
     1     1

>> any([0 0 1])%说明运算规则——全0为0,否则为1
ans =
  logical
   1

2 、列向量

>> size([0;0;0])
ans =
     3     1

>> size(any([0;0;0]))
ans =
     1     1

>> any([0;0;0])
ans =
  logical
   0

3 、三维数组

>> a(1,:,:)=[0 0 0 0;0 0 0 1;0 0 1 0]
a(:,:,1) =
     0     0     0

a(:,:,2) =
     0     0     0

a(:,:,3) =
     0     0     1

a(:,:,4) =
     0     1     0

>> size(a)
ans =
     1     3     4

>> size(any(a))
ans =
     1     1     4

>> any(a)
  1×1×4 logical 数组
ans(:,:,1) =
   0

ans(:,:,2) =
   0

ans(:,:,3) =
   1

ans(:,:,4) =
   1

四、用处

查找数组中是否有满足每一条件的元素。

比如查找数组中是否有小于3的元素

clear
clc
rng(10)
A = magic(3)
threshold=3
any(A(:) < threshold)
if any(A(:) < threshold)%检查A中的数据是否有小于3
    disp "A至少存在一个小于threshold的元素"
else
    disp "A所有的元素都大于threshold"
end

 运行结果

>> 
A =
     8     1     6
     3     5     7
     4     9     2

>> 
threshold =
     3

>> any(A(:) < threshold)
ans =
  logical
   1

>> 
"A至少存在一个小于threshold的元素"

>> 

你可能感兴趣的:(matlab,前端)