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

Answers (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 Comments

pipor
pipor on 6 Sep 2023
Edited: pipor on 6 Sep 2023
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

Sign in to comment.

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 Comments

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.

Sign in to comment.

Categories

Tags

Asked:

on 6 Sep 2023

Commented:

on 6 Sep 2023

Community Treasure Hunt

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

Start Hunting!