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

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

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)

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.

Categories

Community Treasure Hunt

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

Start Hunting!