Clear Filters
Clear Filters

How to count the number of consecutive repetitions of an array?

4 views (last 30 days)
Hi everybody,
I have a double array or a logical one made like this above: A=[0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1]; And I would like to count the number of consecutive repetitions of values 1, getting as output an array like this: B=[3 1 2 1 3], where 3=3 times 1; 1=1 time 1; ecc.. Please, can someone help me with this issue?
Thanks a lot!

Accepted Answer

James Tursa
James Tursa on 12 Apr 2018
E.g.,
[r,s] = runlength(A,numel(A));
result = r(logical(s));
You can find runlength on the FEX:
  7 Comments
Walter Roberson
Walter Roberson on 15 Jan 2021
Your A vector contains values between 1 and 235, not the 0 and 1 of the original Question. What is it that you want to compute on your A?
Walter Roberson
Walter Roberson on 15 Jan 2021
Your A vector has no runs at all. Every value that occurs, occurs in isolation, with there never being two of the same value in a row. You cannot do any useful run-length encoding on it -- not unless you are able to go into pairs of values instead of single values.
load a.mat
results = {};
for targ = unique(A).'
a = A.' == targ;
starts = strfind([0 a], [0 1]);
if isempty(starts); continue; end
stops = strfind([a 0], [1 0]);
results{end+1, 1} = [targ, stops - starts + 1];
end
celldisp(results)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!