MATLAB: Calculate the difference between two points extracted from a loop

differencelogical?loop

A is an array of [441000,1]. The values contained in this array are in the order:
a =
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
I have to find the difference between every starting 1 (i.e 1 after ever 0) and till the next xth position 1. (the position of first 1 – the position of xth 1 after the first series of 1).
So, first difference would be 101-1200 and then 1090-2202, 2200-3200 and so on. Kind of creating an overlap for every cutout.
In the data sample, there are approximately 1300 zeros after 100 ones. So I have to cut out the first one till the next 4th or 5th one and calculate the difference.
It feels like a simple code, but I am totally lost atm.
Thanks for your help!

Best Answer

Assuming a is a vector of 0 and 1 exclusively. Finding the index of each 1 immediately following a zero is trivial: compute the diff of the vector. The [0 1] transition is the only one that results in a diff of 1. ([1 1] and [0 0] is 0, and [1 0] is -1):
start1loc = find(diff(a)) + 1; %add 1 to the result of find since find finds the position of 0 in [0 1]
If you want to also detect a 1 at the beginning of the vector (where it obviously does not follow a zero):
start1loc = find(diff([0; a])); %no offset needed in this case
To compute the difference between these indices, you use another diff
result = diff(start1loc)