Comparing two matrices to find common elements

14 visualizaciones (últimos 30 días)
Srijeet Tripathy
Srijeet Tripathy el 10 de Jul. de 2018
Comentada: Srijeet Tripathy el 10 de Jul. de 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 comentarios
jonas
jonas el 10 de Jul. de 2018
Same amount of columns in both matrices?
Srijeet Tripathy
Srijeet Tripathy el 10 de Jul. de 2018
That's right!

Iniciar sesión para comentar.

Respuesta aceptada

Guillaume
Guillaume el 10 de Jul. de 2018
Simply use ismember:
[rowisinlarger, where] = ismember(smallermatrix, largermatrix, 'rows')

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by