find matching rows in matrices

I want to find which rows in two matrices that are matching.
If I for example have
A =
1 2
4 5
9 7
1 2
6 5
and
B =
2 5
1 2
9 2
1 2
I would like a result like
index_A=[1 4] index_B=[2 4].
Any idea how to solve this?

 Respuesta aceptada

Roger Stafford
Roger Stafford el 7 de Jun. de 2014
Use the 2nd and 3rd returned arguments in 'intersect':
[~,index_A,index_B] = intersect(A,B,'rows');

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 6 de Jun. de 2014
C = intersect(A,B,'rows')
index_A= find(ismember(A,C,'rows'));
index_B= find(ismember(B,C,'rows'));

1 comentario

Johan
Johan el 6 de Jun. de 2014
Editada: Johan el 6 de Jun. de 2014
thanks, it's a good start, however I realised that it doesn't solve my 'real'fully, since I need index_A and index_B to be of the same length.
If
A =
1 2
4 5
9 7
1 2
6 5
6 5
and
B =
2 5
1 2
9 2
1 2
6 5
this solution would give
index_A = [1 4 5 6] index_B = [2 4 5]
but I need it to be
index_A = [1 4 5] index_B = [2 4 5]
Do you know how to solve it? I'm sorry that the first example didn't cover this case.

Iniciar sesión para comentar.

Etiquetas

Preguntada:

el 6 de Jun. de 2014

Respondida:

el 7 de Jun. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by