Counting Specific Number of Consecutive Values in a Matrix
조회 수: 5 (최근 30일)
이전 댓글 표시
I have a matrix composed of ones and zeros.
I need to idenity where there are three 1s in each COLUMN
1 0 0 1 1
1 0 1 1 1
1 1 1 0 1
1 0 1 1 1
1 1 0 1 1
0 1 1 1 1
1 1 1 0 1
I want to have the code identify if
- there are three consecutive 1s in the first through third column, and
- that there are two sets of consecutive 1s in the fourth column.
I then want to compare this matrix with another matrix, and find where they are similar in the exact locations of the three consecutive 1s.
댓글 수: 0
채택된 답변
Image Analyst
2021년 1월 17일
Here's another way using the Image Processing Toolbox to filter out short sequences and count how many are left:
A = [1 0 0 1 1
1 0 1 1 1
1 1 1 0 1
1 0 1 1 1
1 1 0 1 1
0 1 1 1 1
1 1 1 0 1]
A = logical(A); % Make sure it's logical.
[rows, columns] = size(A)
criteria = false(1, 4); % True or false for whether the criteria for that column is met or not
for col = 1 : 3
% Get rid of any sequences that are not at least 3 long in the first 3 columns.
A(:, col) = bwareaopen(A(:, col), 3);
% Set the criteria
[~, numSequences] = bwlabel(A(:, col)) % Count number of sequences.
criteria(col) = numSequences >= 1
end
% For the 4th column, make sure there are at least 2 sets of 1s
% that are at least 2 elements long.
col4 = bwareaopen(A(:, 4), 2) % Only sequences 2 or longer survive.
[~, numSequences] = bwlabel(col4)
criteria(4) = numSequences >= 2
% Show results in command window
A
criteria
댓글 수: 0
추가 답변 (1개)
KSSV
2021년 1월 17일
편집: KSSV
2021년 1월 17일
A = [1 0 0 1 1
1 0 1 1 1
1 1 1 0 1
1 0 1 1 1
1 1 0 1 1
0 1 1 1 1
1 1 1 0 1];
% First column
x = A(:,1) ;
f = find(diff([0 ;x ;0]==1));
id = f(1:2:end-1); % Start indices
N = f(2:2:end)-p; % Consecutive ones’ counts
Also have a look on ismember, this would be useful to check two different matrices have common eements.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!