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

3 次查看(过去 30 天)
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.

采纳的回答

Monica Roberts
Monica Roberts 2022-5-17
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];

更多回答(1 个)

Torsten
Torsten 2022-5-17
编辑:Torsten 2022-5-17
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.

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by