how velocize operation boolean

N = 5
N = 5
a=[0.3 1 0 3 9]
a = 1×5
0.3000 1.0000 0 3.0000 9.0000
b=a<N
b = 1×5 logical array
1 1 1 1 0
find(b&(~a))
ans = 3

回答(2 个)

That code has nothing to do with your subject line. You want
logicalIndexes = a == 1
% or
linearIndexes = find(a == 1)
Same for b or any other variable.

5 个评论

pipor
pipor 2023-9-6
编辑:pipor 2023-9-6
i want find index
a=[5 0 1 9 0]
n=6;
a===> [1 0 1 1 0]
b==> a-n=[1 1 1 0 1]
(i want to find idx element that change from 0 to 1 )
0 1 0 0 solution ! ==> 2 position
How is a-n equal to what you have wrote?
n=6;
a=[1 0 1 1 0];
b=a-n
b = 1×5
-5 -6 -5 -5 -6
sorry I was wrong..but I did the numerical example by hand
b=n-a
a=[0.3 1 0 3 9]
a = 1×5
0.3000 1.0000 0 3.0000 9.0000
n=6
n = 6
b=a<n
b = 1×5 logical array
1 1 1 1 0
a>0
ans = 1×5 logical array
1 1 0 1 1
b
b = 1×5 logical array
1 1 1 1 0
find((a==0)&(~b==0))
ans = 3
a=[0.3 1 0 3 9]
a = 1×5
0.3000 1.0000 0 3.0000 9.0000
n=6
n = 6
b=a<n
b = 1×5 logical array
1 1 1 1 0
a>0
ans = 1×5 logical array
1 1 0 1 1
b
b = 1×5 logical array
1 1 1 1 0
find((a==0)&(~(b==0)))
ans = 3
but with b already being logical, b==0 is the same as ~b, and ~ of that is ~~b which for logical would be the same as b

请先登录,再进行评论。

You asked : "(i want to find idx element that change from 0 to 1 )"
So do this:
a = [5, 0, 1, 9, 0, 1];
index = strfind(a, [0, 1]) % Look for where [0, 1] occurs in the vector.
index = 1×2
2 5
The index is at the start, that is, where the zeros are.

5 个评论

how could you verify I have problems speaking English correctly..but you insist on helping me with a solution that I didn't ask for..now I've changed the topic so you're more serene
" i want find element that: a==0 and b==1"
Try this:
a= [1 1 0 1 1]; % (is correct)
b = [1 1 1 1 0]; % (is correct)
logicalIndexes = (a == 0) & (b == 1)
logicalIndexes = 1×5 logical array
0 0 1 0 0
linearIndexes = find((a == 0) & (b == 1))
linearIndexes = 3
This should all be covered in the learning on-ramp. To learn other fundamental concepts, invest 2 hours of your time here:
ok solved..thanks
excuse me a last question:
you use: (b == 1)) but b is logical
why you don't use (b) ..is the same?
(b == 1) will be logical because it's comparing the number to 1. b can be any data type, like double or integer or logical. The result will be true or false values, or 1 and 0 if you convert them to numbers, for example to multiply element-by-element by another numerical vector.
If b is logical than (b) is logical (already). If b is a double vector like [1,2,44,66] then b is not logical -- not true or false values.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Text Data Preparation 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by