Comparing two matrices to find common elements

14 Ansichten (letzte 30 Tage)
Srijeet Tripathy
Srijeet Tripathy am 10 Jul. 2018
Kommentiert: Srijeet Tripathy am 10 Jul. 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 Kommentare
jonas
jonas am 10 Jul. 2018
Same amount of columns in both matrices?
Srijeet Tripathy
Srijeet Tripathy am 10 Jul. 2018
That's right!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by