Info
This question is closed. Reopen it to edit or answer.
How can I identify the position of the repeated rows within a matrix?
1 view (last 30 days)
Show older comments
For instance, I have matrix
A=
[9 5 6 9 5 6 9 5 0;
9 6 0 9 6 0 9 6 5;
2 8 6 2 8 5 2 8 6;
6 4 0 6 4 0 6 4 0;
9 3 6 9 3 6 9 3 0;
10 7 5 10 7 6 10 7 6;
8 9 0 8 9 0 8 9 0;
6 8 0 6 8 5 6 8 0;
4 7 0 4 7 6 4 7 0;
2 7 6 2 7 0 2 7 5;
1 5 6 1 5 6 1 5 6;
6 5 0 6 5 0 6 5 0;
4 3 0 4 3 6 4 3 0;
7 2 5 7 2 0 7 2 5;
8 5 0 8 5 6 8 5 6;
2 6 5 2 6 0 2 6 5;
2 8 5 2 8 0 2 8 5;
7 10 5 7 10 6 7 10 6;
7 4 0 7 4 0 7 4 6;
7 4 6 7 4 6 7 4 6;
10 9 5 10 9 6 10 9 5;
10 8 0 10 8 6 10 8 5;
6 2 5 6 2 0 6 2 0;
7 8 5 7 8 5 7 8 6;
7 3 6 7 3 5 7 3 6;
5 2 6 5 2 0 5 2 0;
7 9 0 7 9 6 7 9 0;
7 2 6 7 2 5 7 2 0;
5 6 0 5 6 0 5 6 0;
6 9 0 6 9 0 6 9 0;
4 2 0 4 2 0 4 2 6;
8 2 0 8 2 6 8 2 6;
6 10 0 6 10 0 6 10 0;
7 1 6 7 1 0 7 1 0;
10 6 0 10 6 0 10 6 5;
8 3 6 8 3 5 8 3 5;
8 4 0 8 4 0 8 4 0;
6 7 0 6 7 5 6 7 5;
4 1 6 4 1 0 4 1 6;
6 5 0 6 5 0 6 5 0;
3 9 0 3 9 6 3 9 5;
8 2 5 8 2 5 8 2 5;
4 1 0 4 1 6 4 1 6;
3 4 6 3 4 0 3 4 6;
8 7 6 8 7 6 8 7 6;
9 1 0 9 1 6 9 1 5;
8 1 6 8 1 6 8 1 0;
2 9 6 2 9 6 2 9 6;
8 3 5 8 3 6 8 3 6;
1 7 0 1 7 5 1 7 0;
10 3 6 10 3 6 10 3 5;
8 10 5 8 10 0 8 10 5;
10 5 6 10 5 0 10 5 0;
10 2 6 10 2 6 10 2 5;
8 7 5 8 7 6 8 7 5;
9 8 5 9 8 6 9 8 5;
10 7 5 10 7 0 10 7 5;
9 5 6 9 5 6 9 5 0;
3 4 0 3 4 0 3 4 5;
1 2 6 1 2 6 1 2 5;
9 6 0 9 6 0 9 6 5;
6 9 0 6 9 0 6 9 0;
4 2 6 4 2 6 4 2 6;
7 3 0 7 3 5 7 3 5;
9 4 5 9 4 5 9 4 6;
2 9 0 2 9 6 2 9 0;
2 5 0 2 5 0 2 5 0;
4 9 0 4 9 5 4 9 6;
4 8 6 4 8 0 4 8 6;
8 9 6 8 9 5 8 9 0;
5 8 0 5 8 0 5 8 6;
10 9 5 10 9 5 10 9 5;
5 9 0 5 9 0 5 9 0;
9 7 5 9 7 6 9 7 0;
10 1 6 10 1 5 10 1 5;
1 3 5 1 3 5 1 3 0;
7 1 0 7 1 6 7 1 0;
7 9 0 7 9 6 7 9 6;
3 8 5 3 8 0 3 8 6;
1 6 5 1 6 0 1 6 5;
2 7 0 2 7 5 2 7 6;
3 2 5 3 2 5 3 2 5;
6 8 0 6 8 0 6 8 0;
3 6 0 3 6 5 3 6 5;
1 3 6 1 3 0 1 3 6;
7 5 0 7 5 0 7 5 0;
7 10 6 7 10 5 7 10 6;
5 7 0 5 7 0 5 7 0;
9 1 6 9 1 0 9 1 0;
6 7 5 6 7 0 6 7 0;
4 9 0 4 9 0 4 9 0;
10 2 6 10 2 5 10 2 6;
1 10 5 1 10 0 1 10 5;
6 3 5 6 3 5 6 3 0;
6 4 0 6 4 0 6 4 0;
2 4 0 2 4 0 2 4 0;
9 2 5 9 2 6 9 2 5;
5 7 6 5 7 0 5 7 6;
3 6 5 3 6 0 3 6 0;
5 10 0 5 10 6 5 10 0;
9 2 6 9 2 0 9 2 6;
3 7 0 3 7 0 3 7 6;
4 3 6 4 3 0 4 3 5;
8 6 0 8 6 0 8 6 0;
4 8 5 4 8 0 4 8 5;
9 8 6 9 8 0 9 8 5;
10 5 0 10 5 0 10 5 0;
3 8 5 3 8 6 3 8 0;
10 3 0 10 3 6 10 3 0;
9 7 0 9 7 6 9 7 0;
2 3 0 2 3 5 2 3 6;
2 6 0 2 6 5 2 6 0;
5 8 0 5 8 6 5 8 0;
5 4 0 5 4 0 5 4 6;
3 1 5 3 1 5 3 1 5;
5 6 0 5 6 0 5 6 0;
2 1 6 2 1 5 2 1 6;
9 10 5 9 10 5 9 10 5;
5 10 0 5 10 0 5 10 0;
3 5 0 3 5 0 3 5 6;
3 9 0 3 9 6 3 9 5;
4 7 6 4 7 0 4 7 6;
5 3 0 5 3 6 5 3 0;
10 1 5 10 1 6 10 1 0;
6 2 0 6 2 5 6 2 0;
2 5 0 2 5 6 2 5 0;
3 7 6 3 7 0 3 7 5;
7 8 5 7 8 6 7 8 0;
3 10 0 3 10 0 3 10 6;
4 5 0 4 5 0 4 5 0;
5 2 0 5 2 0 5 2 0;
1 4 0 1 4 6 1 4 5;
1 10 5 1 10 6 1 10 5;
5 9 0 5 9 0 5 9 0;
3 1 0 3 1 6 3 1 6;
1 9 5 1 9 0 1 9 0;
4 6 5 4 6 5 4 6 0;
7 6 5 7 6 5 7 6 0;
9 10 6 9 10 0 9 10 6;
10 6 0 10 6 5 10 6 0;
1 8 5 1 8 5 1 8 0;
2 4 6 2 4 6 2 4 6;
10 8 6 10 8 6 10 8 0;
3 5 6 3 5 0 3 5 6;
8 10 5 8 10 0 8 10 5;
8 5 0 8 5 0 8 5 6;
1 4 6 1 4 6 1 4 6;
7 5 0 7 5 0 7 5 0;
1 9 6 1 9 6 1 9 6;
5 1 0 5 1 0 5 1 0;
2 10 5 2 10 6 2 10 6;
2 3 5 2 3 5 2 3 5;
2 10 0 2 10 5 2 10 0;
5 1 6 5 1 0 5 1 6;
2 1 6 2 1 0 2 1 5;
4 5 0 4 5 0 4 5 6;
10 4 5 10 4 5 10 4 5;
4 6 0 4 6 0 4 6 0;
4 10 6 4 10 0 4 10 0;
1 2 5 1 2 5 1 2 5;
8 1 6 8 1 0 8 1 5;
6 10 0 6 10 0 6 10 5;
6 3 5 6 3 0 6 3 5;
1 7 0 1 7 0 1 7 0;
10 4 0 10 4 5 10 4 5;
7 6 0 7 6 0 7 6 5;
5 3 6 5 3 0 5 3 0;
9 4 5 9 4 5 9 4 6;
3 10 5 3 10 6 3 10 0;
4 10 0 4 10 6 4 10 0;
1 6 0 1 6 0 1 6 0;
1 5 0 1 5 6 1 5 0;
1 8 6 1 8 0 1 8 6;
8 4 5 8 4 0 8 4 0;
8 6 0 8 6 0 8 6 0;
3 2 0 3 2 6 3 2 5;
5 4 6 5 4 6 5 4 6;
9 3 5 9 3 0 9 3 6;
6 1 5 6 1 0 6 1 0;
6 1 5 6 1 0 6 1 5]
and what I need to identify is the position of the repeated rows from A(:,1:3),A(:,4:6), and A(:,7:9).As a solution, why I am looking for is for example repeated_rows1(A:,1:3)=[29;4],repeated_rows2(A:,4:6)=[159;46; 1;89], and repeated_rows3(A:,1:3)=[9;178]. Matrix A is not a fixed matrix it can grow. Right now I have an A(180,9) but the columns number can increase.Sincerely,I do not have any idea about how to do it so I would really appreciate your help. Thanks.
0 Comments
Answers (1)
Matt J
on 10 Sep 2014
Edited: Matt J
on 10 Sep 2014
Consider the simpler matrix
A =
10.5000 10.5000
10.5000 10.5000
20.5000 20.5000
20.5000 20.5000
10.5000 10.5000
and now observe how the 3rd output of unique identifies the locations of the repetitions,
>> [u,i,j]=unique(A,'rows')
u =
10.5000 10.5000
20.5000 20.5000
i =
1
3
j =
1
1
2
2
1
2 Comments
Hikaru
on 11 Sep 2014
You could loop through the columns. But you'll need to find a way to store the values of IC depending on what you want to do with them.
[r,c] = size(A)
for i = 1:3:c
[C,IA,IC] = unique(A(:,i:i+2),'rows')
end
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!