2012-05-13 1 views
1

J'ai une matrice x de taille Nx2 (contient (x, y) coordonnées) et une matrice c de taille Px1 (P < = N) qui contient certaines coordonnées x qui I ' m intéressé par Par exemple:.matlab - trouver les indices des éléments dans x

x = [10 3; 21 9; 98 54; 4 30; 37 12]; 
c = [4 98]; 

Je veux obtenir les coordonnées des éléments en c (dans le cas ci-dessus [4 3]). Comment puis-je faire ceci? Je n'ai trouvé un moyen que lorsque c est une matrice 1x1 (c'est-à-dire un scalaire).

Répondre

3

ismember peut être utilisé pour tester l'appartenance de plusieurs valeurs. Vous pouvez découper la matrice N-by-2 pour rechercher uniquement les coordonnées x.

coords = [1 2; 3 4; 5 6; 7 8]; 
c = [3 7 99]; 
[v i] = ismember(c, coords(:, 1)); 
i = 
    [2 4 0]  

i doit contenir les indices où les valeurs dans c apparaissent comme les coordonnées x dans coords, ou 0 si l'élément est introuvable. Si vous avez une version récente de Matlab, vous pouvez remplacer v par ~.

+0

Le problème avec celui-ci est qu'il ne retourne pas les indices dans le même ordre qu'ils apparaissent dans x. – s5s

+0

il les renverra dans l'ordre de 'c'. Vous pouvez les obtenir dans l'ordre de x en utilisant 'i = sort (i)'. – Richante

Questions connexes