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
當是向量比較大小的時候,用一個邏輯符號;