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 で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!