Find indices of one array in another array.

I have two different sized two column arrays, like the example below:
A = [1 1; 1 2; 2 2; 2 3; 3 3; 3 4; 4 3; 4 4];
B = [1 1; 2 2; 3 3; 4 4];
Now I want to find the indices of the rows in A that are equal to B. So the answer should be:
idx_rows = [1 3 5 8]
How can I do this?
Thanks!

 Réponse acceptée

Birdman
Birdman le 28 Mar 2018
Modifié(e) : Birdman le 28 Mar 2018
[~,idx]=setdiff(A,B,'rows');
idx_rows=setdiff(1:size(A,1),idx)

Plus de réponses (1)

Stephen23
Stephen23 le 28 Mar 2018
Modifié(e) : Stephen23 le 28 Mar 2018
The simplest solution is to use ismember:
>> A = [1 1; 1 2; 2 2; 2 3; 3 3; 3 4; 4 3; 4 4];
>> B = [1 1; 2 2; 3 3; 4 4];
>> [~,idx] = ismember(B,A,'rows')
idx =
1
3
5
8

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by