Filter löschen
Filter löschen

Ismember for rows or something else

1 Ansicht (letzte 30 Tage)
Rostislav Teryaev
Rostislav Teryaev am 2 Jul. 2018
Hello! I have to matrices a and b:
a = [1 2;
3 4;
5 6;
7 8;
1 2;
9 10]
b = [1 2;
5 6]
Every row in these tables describe one entity (start and target node of graph edge). So, I want to find indices of a where the rows are equal to rows in b. In other words I need to get this:
c = [1, 3, 5]
But when I use
[~, c] = ismember(b, a, 'row')
I get only this:
c = [1, 3]

Akzeptierte Antwort

Jan
Jan am 2 Jul. 2018
Bearbeitet: Jan am 2 Jul. 2018
Simply swap the inputs:
[found, index] = ismember(a, b, 'rows')
result = find(found)
  2 Kommentare
Rostislav Teryaev
Rostislav Teryaev am 2 Jul. 2018
Exactly! Thank you
Rostislav Teryaev
Rostislav Teryaev am 2 Jul. 2018
I managed to do this:
a = [1 2;3 4;5 6;7 8;1 2;9 10]
b = [1 2;5 6]
a1 = permute(a,[1 3 2])
b1 = permute(b,[3 1 2])
find(any(all(a1==b1 , 3), 2))
:)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by