How to find a number but if it repeats immediately after, take the first value.

1 view (last 30 days)
I want to be able to find the index of the first 5 in but ignore the other 5's if they are immediately right after.
In the example below, there would be three 5's I would want to keep.
A = [0 5 0 5 5 0 0 0 5 5 5 5 5 0 0 0]
b = A == 5;
c = find(b == 1);
A = [0 5(keep) 0 5(keep) 5 0 0 0 5(keep) 5 5 5 5 0 0 0]

Accepted Answer

Stephen23
Stephen23 on 7 Apr 2021
A = [0 5 0 5 5 0 0 0 5 5 5 5 5 0 0 0];
X = diff([false,A==5])>0
X = 1×16 logical array
0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0

More Answers (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov on 7 Apr 2021
Here is an easy solution to your exercise:
A = [0 5 0 5 5 0 0 0 5 5 5 5 5 0 0 0];
IND = find(A==5);
C = A(IND(1:5));
Good luck.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by