# Same Rows between two matrix

1 view (last 30 days)
Sayid Bajrai Nasir on 24 Mar 2020
How do I find matricies with the same rows? I need to find unque Matricies.
A = [1 2; 3 4; 6 7], B = [3 4; 1 2; 6 7], C = [7 8; 8 2; 1 3], D = [1 2; 1 2; 6 7]
• A is considered the same as B, since A(1,:) = B(2,:), A(2,:) = B(1,:) and A(3,:) = B(3,:).
• A and B is not the same as C, since the rows do not match.
• A, B is not considered the same as D, even when D(1,:) = A(1,:) but also D(2,:) = A(1,:).
• Each rows (in matrix X) should correspond to the other row (in matrix Y).
• all matrix have the same size.
Using the above rules, I only need unique matrix, so output should be just A, C and D. (I dont need index, but ok with it outputing index)

#### 1 Comment

Sayid Bajrai Nasir on 24 Mar 2020
Just to be clear, elements in each row can be sorted:
C = [7 8; 8 2; 1 3] => C = [7 8; 2 8; 1 3] these are considered the same.

David Hill on 24 Mar 2020
isequal(sortrows(A),sortrows(B));

David Hill on 24 Mar 2020
isequal(sortrows(sort(A,2)),sortrows(sort(B,2));
Sayid Bajrai Nasir on 24 Mar 2020
Thanks it seems to work for now.

per isakson on 24 Mar 2020
Edited: per isakson on 24 Mar 2020
>> setdiff( A, B, 'rows' )
ans =
0×2 empty double matrix
>> setdiff( A, C, 'rows' )
ans =
1 2
3 4
"Same Rows between two matrix" see union, Set union of two arrays

#### 1 Comment

Sayid Bajrai Nasir on 24 Mar 2020
This may have been my fault for not using a clearer example, If we consider
X = [1 2; 3 4; 1 2; 3 4], Y = [1 2; 1 2; 1 2; 3 4];
setdiff( X, Y, 'rows' )
ans =
0×2 empty double matrix
But X and Y are not considered the same, and the output would be both X and Y, not just X