Count the sequence of same values in an array until an new value comes up
조회 수: 7 (최근 30일)
이전 댓글 표시
Hello everybody!
I need to count every sequence of same values, until a new, different sequence of a value comes up. Then, I need to count the new sequence.
As example: My row is 00000001111-1-1-1-1-1000111
I want to get a table saying:
Element: 0 1 -1 Count: 2 2 1
This means that I have 2 sequences of zeros, two sequences of ones and one sequence of minus ones.
I don't need to count each value, just the sequence until the next sequnece of values!
Thank you.
댓글 수: 1
dpb
2016년 12월 17일
Bruno Luong has a runs-counting submittal at FileExchange that'll probably be just the ticket...
답변 (3개)
the cyclist
2016년 12월 17일
편집: the cyclist
2016년 12월 17일
Then,
x = RunLength([0 0 0 1 1 -1 -1 0 0 1 1 ]);
u = unique(x); % The unique values
c = histcounts(x,[u Inf]); The number of sequences of those unique values
댓글 수: 0
Jan
2016년 12월 18일
편집: Jan
2016년 12월 18일
Simpler than RunLength, because the sequence length does not matter:
x = [0 0 0 1 1 -1 -1 0 0 1 1 ];
B = x([diff(x)~=0, true]);
u = unique(B); % The unique values
c = histcounts(x, [u, Inf]);
The calculation of B is slower then with RunLength.mex, but if runtime is not the problem in your case, you can save the time and effort for compiling.
댓글 수: 3
Image Analyst
2022년 12월 1일
@Reji G here are some ways
x = [0 0 0 1 1 -1 -1 0 0 1 1 ];
numZeros = nnz(x == 0)
numZeros = numel(x) - nnz(x)
numZeros = sum(x == 0, 'all')
Image Analyst
2016년 12월 18일
This is trivial (4 lines of code) with bwlabel of the Image Processing Toolbox which counts regions:
m = [0 0 0 0 0 0 0 1 1 1 1 -1 -1 -1 -1 -1 0 0 0 1 1 1] % Instantiate sample data.
uniquem = unique(m)
for k = 1 : length(uniquem)
[labeledData, counts(k)] = bwlabel(m == uniquem(k));
end
% Done! Now show to command window so we can see the results.
counts % Shows 1,2,2 for number of regions for -1, 0, 1
If you don't want the counts in numerical order like -1,0,1 then you can of course simply put "counts" in whatever order you want to sort it in.
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!