How to quickly find the maximum group of same rows in a matrix?

2 ビュー (過去 30 日間)
Benson Gou
Benson Gou 2019 年 11 月 18 日
コメント済み: Star Strider 2019 年 12 月 2 日
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

採用された回答

Star Strider
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 件のコメント
Benson Gou
Benson Gou 2019 年 12 月 2 日
Dear Star,
Thanks a lot for your great help. Now it works very well.
Happy Holidays!
Bension
Star Strider
Star Strider 2019 年 12 月 2 日
As always, my pleasure!
Happy Holidays to you, too!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by