2016-03-22 17 views
2

bunun gibi bir matris vardır: elde etmek için bu değerlere dayalı ardındanMatlab birden indeksleme

a= [ 61 65 63 ; ... 
    21 21 24 ; ... 
    34 2 51 ] 
b= [ -1 0 8; ... 
     -2 0 6; ... 
     -4 0 2] 
c=cat(3,a,b) 

Ne yapmak istediğiniz en yüksek değere c üzerine ilk boyuta sıraları tarafından bulmaktır ve satır ve sütun değerleri ancak c.

[maxV,colIndx] =max(c,[],2) 

m=maxV(:,:,1) 
f=c(:,colIndx(:,1,1),2) 

benim cevabın vektör m dönüş yarısı, yani

m = 

    65 
    24 
    51 

şimdi, f

f = 

    0 
    6 
    2 
gibi olmak istiyorum: Benim örnekte

, şu çalışıyorum

Ancak, kodum istediğimi döndürmez. Herhangi bir yardım çok takdir edilir!

+0

üzerinde okudunuz [bulun] (http://nl.mathworks.com/help/matlab/ref/find.html) ve uygulamaya çalışıyorum söyledi. Eğer işe yaramazsa, sorunuzu neyi denediğiniz ile düzenleyin. – Johannes

+0

Bulmak için yönergeleri okudum ancak dizini zaten bildiğim için sorunuma yardımcı olduğunu sanmıyorum, yalnızca matristen belirli öğeleri almak istiyorum. Yine de cevap için teşekkürler. – Thanasis

cevap

4

sub2ind fonksiyonu üzerinden doğrusal indeksleme kullanmayı deneyin:

linIndx = sub2ind(size(c), (1:(size(c,1)))', colIndx(:,:,1), ones(size(c,1),1)*2); 
f = c(linIndx) 
+0

Bu harika çalıştı! Çabuk cevap için teşekkür ederim! – Thanasis