一、帮助文档中的介绍
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的元素"
>>