Series of consecutive numbers (different lengths)

alex picture alex · Oct 21, 2011 · Viewed 11.5k times · Source

I would appreciate if someone showed me an easy way to do this. Let's say I have a vector in MATLAB like

d = [3 2 4 2 2 2 3 5 1 1 2 1 2 2 2 2 2 9 2]

I want to find the series of consecutive number "twos" and the lengths of those series.

Number twos can easily be found by x=find(d==2). But what I want is to get a vector which contains the lengths of all series of consecutive number twos, which means that my result in this case would be a vector like this:

[1 3 1 5 1].

Anyone who could help me?

Answer

Max picture Max · Oct 21, 2011

This seems to work:

q = diff([0 d 0] == 2);
v = find(q == -1) - find(q == 1);

gives

v =

   1   3   1   5   1

for me