How do I count how many times in a row a value occurs?

3 views (last 30 days)
If I have some list, say:
A = [1 2 4 3 1 1 1 1];
How do I calculate and store *how many times in a row* each number occurs?
For example, for the value 1, I would want an output of [1, 4], since it appears one time, then when it appears again in the list it repeats four times.
Any help would be appreciated.

Accepted Answer

Monica Roberts
Monica Roberts on 17 May 2022
Probably not the fastest/cleanest but this should work. Assuming that A contains at least one value.
ind = find(A==1);
answer = [];
count = 1;
for i = 1:numel(ind)-1
d = ind(i+1)-ind(i);
if d == 1
count = count+1;
else
answer = [answer,count];
count = 1;
end
end
answer = [answer,count];

More Answers (1)

Torsten
Torsten on 17 May 2022
Edited: Torsten on 17 May 2022
A = [1 2 4 3 1 1 1 1];
Au = unique(A);
count = arrayfun(@(i)numel(find(A==Au(i))),1:numel(Au))
output = [Au;count].'
Your question is unclear since the 1 appears 5 times in the row. If you want the maximum number of subsequent repetitions of a number or something similar, you should again formulate your question properly.

Community Treasure Hunt

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

Start Hunting!