MatLab---逻辑向量与逻辑矩阵
v=rand(1,5)
v =
0.3012 0.4709 0.2305 0.8443 0.1948
>> v>0.5
ans =
1×5 logical 数组
0 0 0 1 0
v(u) ;显示logical类型为真值的元素
ans =
0.8443
>> vec=[5 9 3 4 6 11]
vec =
5 9 3 4 6 11
>> v=[0 1 0 0 1 1]
v =
0 1 0 0 1 1
>> vec(v)
错误:数组索引必须为正整数或逻辑值。
>> v=logical([0 1 0 0 1 1])
v =
1×6 logical 数组
0 1 0 0 1 1
>> vec(v)
ans =
9 6 11
>> log_true=ones(3,4,'logical') :创建一个三行四列的logical类型的真值的元素
log_true =
3×4 logical 数组
1 1 1 1
1 1 1 1
1 1 1 1
v
v =
1×6 logical 数组
0 1 0 0 1 1
>> u
u =
1×5 logical 数组
0 1 0 1 0
>> any(v)%
ans =
logical
1
>> any(v)%至少有一个是真的 当N行M列时,判断一列中至少有一个真的,结果是行向量
ans =
logical
1
>> all(v)%是不是数组中全部是真值 当N行M列时,判断一列中是否全为真的,结果是行向量
ans =
logical
0
X=rand(1,5)
X =
0.4694 0.4138 0.5027 0.1254 0.1323
>> v=X>0.2
v =
1×5 logical 数组
1 1 1 0 0
>> find(v) :找到满足X>0.2的下标
ans =
1 2 3
>> min(find(v)) 找出满足条件的下标最小值
ans =
1
find(u,1,'first') %找第一个逻辑真的位置
ans =
2
>> find(u,2,'first')%找前两个逻辑真的位置
ans =
2 3
v1=1:5
v1 =
1 2 3 4 5
>> v2
v2 =
1 2 3 4
>> all(v1==v2)
错误:矩阵维度必须一致。
>> isequal(v1,v2) :两个向量的维度不一样时,也可以比较
ans =
logical
0
删除向量中小于0的元素
vec=[11 -5 33 2 8 -4 25]
vec =
11 -5 33 2 8 -4 25
>> vec(find(vec>0))
ans =
11 33 2 8 25
找出0后面是1,1后面是0的元素的个数
rng(0)
>> v=randi([0,1],[1,1000]);
>> %0->1 1->0
>> v(1:10)
sum(diff(v)==1)
ans =
243
>> sum(diff(v)==-1)
ans =
243
向量中,2在1的后面有多少个元素
U=randi([0,2],[1,1000]);
U(find(U==0))=10
sum(diff(U)==1)
ans =
30
在用逻辑运算符时,当是标量的时候,用两个符号;
7>2&&5>3
当是向量比较大小的时候,用一个逻辑符号;

浙公网安备 33010602011771号