How can i count how many time a number appears and for how long in a vector?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
salvatore vergine
el 20 de En. de 2021
Comentada: salvatore vergine
el 21 de En. de 2021
I have a vector like this
v=[+1 +1 +1 0 0 0 +1 +1 -1 -1 +1 0 0 -1 -1 +1 +1]
I want to count how many times each number appears and for how long. i mean, for example let's consider +1. it appears indivigually only 1 time, then it appears in couple 2 times, then it appear in triplet only 1 time and so on. Could someone help me? thank you!
Respuesta aceptada
Jan
el 20 de En. de 2021
Editada: Jan
el 20 de En. de 2021
Start with a run-length-encoding, e.g. by FileExchange: RunLength . If you do not have a C-Compiler installed, use RunLength_M of this submission. Then:
v = [+1 +1 +1 0 0 0 +1 +1 -1 -1 +1 0 0 -1 -1 +1 +1];
[Num, Len] = RunLength_M(v)
Now you have the values and the lengths of the repetitions. Nur you can use histcounts to count, how often each sequence appears. If this is not time-ciritical, a simple loop does it also:
uniqNum = unique(Num);
for aNum = uniqNum(:).'
fprintf('Number: %d\n', aNum);
LenList = Len(Num == aNum);
uniqLenList = unique(LenList);
for aLen = uniqLenList(:)'
fprintf(' Block length: %d', aLen);
fprintf(' : %d times.\n', sum(LenList == aLen));
end
end
5 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Clocks and Timers en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!