Comparing two matrices to find common elements

17 ビュー (過去 30 日間)
Srijeet Tripathy
Srijeet Tripathy 2018 年 7 月 10 日
コメント済み: Srijeet Tripathy 2018 年 7 月 10 日
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 件のコメント
jonas
jonas 2018 年 7 月 10 日
Same amount of columns in both matrices?
Srijeet Tripathy
Srijeet Tripathy 2018 年 7 月 10 日
That's right!

サインインしてコメントする。

採用された回答

Guillaume
Guillaume 2018 年 7 月 10 日
Simply use ismember:
[rowisinlarger, where] = ismember(smallermatrix, largermatrix, 'rows')
  1 件のコメント
Srijeet Tripathy
Srijeet Tripathy 2018 年 7 月 10 日
Thanks. Works perfectly!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by