Count instances of subarray inside array
조회 수: 2 (최근 30일)
이전 댓글 표시
For an array
A = [2,2,2,2];
I would like to count how many times [2,2] appears in A, using each value only in one possible pair.
For example,
numel(strfind(A,[2,2]))
returns 3.
But if each "2" is used only once, then we have only 2 instances, instead of 3.
A is not necessarily of all same elements or even-number size, it could be e.g. A = [1,2,3].
Is there a simple way to do that?
댓글 수: 2
답변 (1개)
Turlough Hughes
2021년 11월 4일
You could do the following:
b = A == 2; % binary indicating where A equal to 2
count = 0;
ii = 1;
while ii < numel(A)
if b(ii+1) && b(ii)
count = count + 1;
ii = ii + 1;
end
ii = ii + 1;
end
When there is a match, the loop variable, ii, increments an extra time so that each "2" is only used once.
댓글 수: 3
Turlough Hughes
2021년 11월 4일
편집: Turlough Hughes
2021년 11월 7일
Another way would be to get the length of each group of twos (based on this answer by @Image Analyst) and then round down each group's length to the nearest whole number divisible by two:
measurements = regionprops(A == 2, 'Area');
allLengths = [measurements.Area];
count = sum(floor(allLengths/2))
(if you have the image processing toolbox)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!