How can i count how many time a number appears and for how long in a vector?
조회 수: 2 (최근 30일)
이전 댓글 표시
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!
채택된 답변
Jan
2021년 1월 20일
편집: Jan
2021년 1월 20일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Clocks and Timers에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!