runs of 1s and 2s in a long vector
1 view (last 30 days)
Show older comments
i have a long vector which has a whole bunch of 1s and 2s.. I need to find how many such strings of 1s and 2s are there. Is there a slick way of getting this out of the array?
2 Comments
Sushant Mahajan
on 26 Jul 2018
Do you need the total number of 1s and 2s? Or are you looking for the number of consecutive bunches (groups) of 1s/2s in that array?
Accepted Answer
Guillaume
on 26 Jul 2018
Edited: Guillaume
on 26 Jul 2018
If you want to find the number of runs (regardless of their length) as opposed to the count of 1s or 2s:
v = [0 3 1 1 1 4 5 6 2 2 2 1 1 2 7 8 9 1 1 1 2 2 1 1 1 10 11 2 2 12 2]; %demo data
runcount = @(v, n) nnz(diff([false, v == n]) == 1); %works only for row vectors
runsof1 = runcount(v, 1)
runsof2 = runcount(v, 2)
4 Comments
Stephen23
on 26 Jul 2018
@Pappu Murthy: try starting the vector with one of the values that you are matching, and you will see why false is required.
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!