Comparing two matrices to find common elements

12 vues (au cours des 30 derniers jours)
Srijeet Tripathy
Srijeet Tripathy le 10 Juil 2018
Commenté : Srijeet Tripathy le 10 Juil 2018
Dear Users, I have two matrices where one is the subset of the other. I want to compare both the matrices row wise and I want to generate a column vector that contains the list of rows (row number) that comprise the smaller matrix. I have written a small code but it is not doing the job. Please have a look.
if true
% code
end
sizesmallermatrix = size(smallermatrix);
sizelargermatrix = size(largermatrix);
compare = [];
wc = 0;
for i = 1:sizesmallermatrix(1)
xA = smallermatrix(i, 1);
yA = smallermatrix(i, 2);
xB = smallermatrix(i, 3);
yB = smallermatrix(i, 4);
for j = i+1:sizelargermatrix(1)
xC = largermatrix(j, 1);
yC = largermatrix(j, 2);
xD = largermatrix(j, 3);
yD = largermatrix(j, 4);
wc = wc+1;
if (xA == xC)&&(yA == yC)&&(xB == xD)&&(yB == yD)
compare(count, 1) = j;
end
end
end
  2 commentaires
jonas
jonas le 10 Juil 2018
Same amount of columns in both matrices?
Srijeet Tripathy
Srijeet Tripathy le 10 Juil 2018
That's right!

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 10 Juil 2018
Simply use ismember:
[rowisinlarger, where] = ismember(smallermatrix, largermatrix, 'rows')

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by