How to find duplicate values in 2d matrix?
5 次查看(过去 30 天)
显示 更早的评论
Hello,
I have the following matrix
M =[ 1540 1685 6.90000000000000 24.2000000000000 14.6000000000000;
1540 1700 9.90000000000000 15.5000000000000 17.9000000000000;
1540 1701 9.90000000000000 12.4000000000000 17.9000000000000;
1540 1685 6.90000000000000 23.5000000000000 14.600000000000
1540 1700 9.90000000000000 15 17.9000000000000;
1540 1701 9.90000000000000 13.3000000000000 17.9000000000000;
1540 1680 6.90000000000000 26.2000000000000 14.4000000000000;
1540 1689 6.90000000000000 26.1000000000000 14.6000000000000;
1540 1680 6.90000000000000 24 14.6000000000000;
1540 1680 6.90000000000000 24 14.5000000000000;
1540 1688 7 23.5000000000000 14.6000000000000;
]
And I would like to identify the duplicates of that matrix based on the first two colums and extract them to furher operations. Thus, I would like to have a way to get a sub-matrices of the form
M11 = [ 1540 1700 9.90000000000000 15.5000000000000 17.9000000000000;
1540 1700 9.90000000000000 15 17.9000000000000;
]
M22 =[ 1540 1680 6.90000000000000 26.2000000000000 14.4000000000000;
1540 1680 6.90000000000000 24 14.5000000000000;
]
Thanks in advance
采纳的回答
Rik
2019-7-26
编辑:Rik
2019-7-26
You can indeed use findgroups. You should supply the first two columns as separate inputs.
G=findgroups(M(:,1),M(:,2));
Then I would suggest looping through the group IDs and fill a cell array. Don't use numbered variables, because they are hard to use in further analysis.
2 个评论
Rik
2019-7-26
编辑:Rik
2019-7-26
That should work. You can also use ismember to generate the idx vector (in which case that would become a logical vector). You can also more generally use M(idx,:) instead of specifying each column separately.
Also, starting off with subM=cell(1,max(G)); is probably a good idea.
更多回答(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!