MATLAB: Identifying the repeated rows in a matrix and comparing them to another matrix

arraysmatrixrepeated valuevectors

I need to check which rows of a matrix A are inside another matrix B and if there are repeated rows from the matrix A, then identify the repeated ones and count how many repeated rows are found but for each different set of values. I have tried with ismember and unique functions but i don't know how to keep track of which are the repeated rows and count how many times thoserows are repeated.
A= [4 4; 2 3; 4 2; 3 3; 2 3; 1 3; 3 3]
B=[1 1; 2 1; 3 1; 4 1; 1 2; 2 2; 3 2; 4 2; 1 3; 2 3; 3 3; 4 3; 1 4; 2 4; 3 4; 4 4]

Best Answer

Hello,
you can refer my answer as follows
clear
A= [4 4; 2 3; 4 2; 3 3; 2 3; 1 3; 3 3];
B=[1 1; 2 1; 3 1; 4 1; 1 2; 2 2; 3 2; 4 2; 1 3; 2 3; 3 3; 4 3; 1 4; 2 4; 3 4; 4 4];
n = size(A,1);
rowAinB = [];
for i = 1:n
[LIA,LOCB] = ismember(A(i,:),B,'rows','legacy');
if ~isempty(LOCB)
rowAinB = [rowAinB i];
end
end
repeatA = [];
C = unique(A,'rows','stable');
for i = 1:n
[LIA,LOCB] = ismember(A(i,:),C,'rows','legacy');
repeatA = [repeatA LOCB];
end
m = size(C,1);
coutrepeatA = zeros(m,1);
for i = 1:m
idx = find(repeatA == repeatA(i));
coutrepeatA(i) = length(idx)-1;
end
the unique of matrix A is C and number of repeated row of C is stored in vector "coutrepeatA". As you can see the results below
A =
4 4
2 3
4 2
3 3
2 3
1 3
3 3
C =
4 4
2 3
4 2
3 3
1 3
coutrepeatA =
0
1
0
1
1
Best regards,
Trung