一、帮助文档中的介绍
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 00 0 0 10 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 =logical0
>> size([0 0 1])%注意第一个不等于1维度
ans =1 3>> size(any([0 0 1]))%说明方向
ans =1 1>> any([0 0 1])%说明运算规则——全0为0,否则为1
ans =logical1
2 、列向量
>> size([0;0;0])
ans =3 1>> size(any([0;0;0]))
ans =1 1>> any([0;0;0])
ans =logical0
3 、三维数组
>> a(1,:,:)=[0 0 0 0;0 0 0 1;0 0 1 0]
a(:,:,1) =0 0 0a(:,:,2) =0 0 0a(:,:,3) =0 0 1a(:,:,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) =0ans(:,:,2) =0ans(:,:,3) =1ans(:,:,4) =1
四、用处
查找数组中是否有满足每一条件的元素。
比如查找数组中是否有小于3的元素
clear
clc
rng(10)
A = magic(3)
threshold=3
any(A(:) < threshold)
if any(A(:) < threshold)%检查A中的数据是否有小于3disp "A至少存在一个小于threshold的元素"
elsedisp "A所有的元素都大于threshold"
end
运行结果
>>
A =8 1 63 5 74 9 2>>
threshold =3>> any(A(:) < threshold)
ans =logical1>>
"A至少存在一个小于threshold的元素">>