2011-09-08 4 views
7

J'ai un tableau tridimensionnel, et j'aimerais pouvoir trouver une valeur spécifique et obtenir les trois coordonnées.MATLAB: Recherche de coordonnées de valeur dans un tableau multidimensionnel

Par exemple, si j'ai:

A = [2 4 6; 8 10 12]

A(:,:,2) = [5 7 9; 11 13 15]

et je veux savoir où 7 est, je voudrais obtenir les coordonnées i = 1j = 2k = 2

I J'ai essayé des variantes de find(A == 7), mais je n'ai pas encore trouvé de solution.

Merci!

Répondre

12

La fonction que vous cherchez est ind2sub:

[i,j,k]=ind2sub(size(A), find(A==7)) 
i = 
    1 
j = 
    2 
k = 
    2 
+0

Génial, c'est exactement ce que je cherchais. Merci! –

0

Vous pouvez utiliser trouver pour localiser des éléments non nuls dans un tableau, mais il faut un peu d'arithmétique. De la documentation:

[row,col] = find(X, ...) renvoie les indices de ligne et colonne des entrées non nulles dans la matrice X. Cette syntaxe est particulièrement utile lorsque travailler avec des matrices creuses. Si X est un tableau à N dimensions avec N> 2, col contient des indices linéaires pour les colonnes. Par exemple, pour un tableau X 5-by-7-by-3 avec un élément non nul en X (4,2,3), find renvoie 4 dans la rangée et 16 dans la col. C'est, (7 colonnes en page 1) + (7 colonnes page 2) + (2 colonnes en page 3) = 16.

Si la matrice M a des dimensions a x b x c, puis les indices (i,j,k) pour certains la valeur x sont:

[row,col] = find(A==x); 
i = row; 
j = mod(col,b); 
k = ceil(col/b); 
Questions connexes