Find index to rows of one matrix in another

2 visualizaciones (últimos 30 días)
Bill Tubbs
Bill Tubbs el 31 de Ag. de 2022
Editada: Bill Tubbs el 31 de Ag. de 2022
Suppose I have two matrices:
>> A = eye(3)
A =
1 0 0
0 1 0
0 0 1
>> idx = [1 3 2 2];
>> B = A(idx, :)
B =
1 0 0
0 0 1
0 1 0
0 1 0
But I don't know idx. How would I find the vector idx such that isequal(B, A(idx, :))?
I found answers for calculating the index of one row at a time:
>> find(ismember(A, B(2,:), 'rows'))
ans =
3

Respuesta aceptada

Bill Tubbs
Bill Tubbs el 31 de Ag. de 2022
Editada: Bill Tubbs el 31 de Ag. de 2022
I figured out the answer:
>> [~, idx] = ismember(B, A, 'rows')
idx =
1
3
2
2
In case you want to check that all rows in B where found in A you can do this:
[matches, idx] = ismember(B, A, 'rows')
assert(all(matches))

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by