How to quickly find the maximum group of same rows in a matrix?
조회 수: 2 (최근 30일)
이전 댓글 표시
Dear All,
I have a matrix and there exist identical rows in the matrix. I want to find the maximum group of identical rows in this matrix. For example, I have a matrix as follows:
A = [0 1 0 1 0 0 0 0; 1 0 0 0 1 0 0 0; 1 0 0 0 1 0 0 0; 1 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 1; 0 0 0 0 0 1 1 0; 0 1 0 1 0 0 0 0; 0 1 0 1 0 0 0 0].
There are two groups of identical rows: {row 1, row 7 and row 8}, {row 2, row 3}. So the answer is {row 1, row 7, row 8}. But how can I quickly find it?
Best regsards,
Benson
댓글 수: 0
채택된 답변
Star Strider
2019년 11월 18일
Try this:
A = [0 1 0 1 0 0 0 0; 1 0 0 0 1 0 0 0; 1 0 0 0 1 0 0 0; 1 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 1; 0 0 0 0 0 1 1 0; 0 1 0 1 0 0 0 0; 0 1 0 1 0 0 0 0];
[Au,~,idx] = unique(A, 'rows');
tally = accumarray(idx, 1);
Out = A(idx == max(tally),:) % The Rows Themselves
RowIdx = find(idx == max(tally)) % The Row Indices
producing:
RowIdx =
1
7
8
댓글 수: 6
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Digital Input and Output에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!