2011-09-08 19 views
7

Üç boyutlu bir dizilim var ve belirli bir değeri bulabilmek ve üç koordinatı almak istiyorum. ÖrneğinMATLAB: Çok boyutlu dizideki değer koordinatlarını bulma

, ben varsa:

A = [2 4 6; 8 10 12]

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

ve ben 7 nerede bulmak istiyorum, ben i = 1j = 2k = 2

Koordinatları almak istiyorum find(A == 7)'un varyasyonlarını denedim, ancak henüz bir yere ulaşmadım.

Teşekkürler!

cevap

12

aradığınız fonksiyonu ind2sub geçerli:

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

Harika, bu sadece aradığım şey. Teşekkürler! –

0

Bir dizideki sıfırdan farklı unsurları bulmak için bulmak kullanabilirsiniz, ancak aritmetik biraz gerektirir. belgeleri: seyrek matrisler ile çalışırken

[row,col] = find(X, ...) matris X'te sıfırdan farklı girdilerin satır ve sütun indisleri döndürür Bu sözdizimi özellikle yararlıdır. X, N> 2 ile N boyutlu bir dizi ise, sütun sütunları için doğrusal dizinler içerir. Örneğin, bir 5 x 7 x 3 X dizisi (X, 4,2,3) ile sıfır olmayan bir dizi için X, satır içinde 4 ve 16 sütunlarda dönüşleri bulur. Bu, (sayfa 1 7 sütun) +

+ (sayfa 3 2 sütun) = 16 ( sayfa 2'de 7 sütun), bir matris M bazı boyutlar a x b x c, daha sonra endeksleri (i,j,k) varsa x değeri:

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