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

当是向量比较大小的时候,用一个逻辑符号;

posted @ 2022-04-07 13:40  无敌小金刚  阅读(543)  评论(0)    收藏  举报