2016-03-22 10 views
2

私はこのような行列持っている:私は何をしたいかMatlabの複数のインデックス

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) 

が最高値Cに最初の次元の行で見つけることですが、その後、取得するために、これらの値に基づいて、行と列ではなく、cの3番目の次元の値。

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

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

私の答えのベクトルmのリターン半分、すなわち

m = 

    65 
    24 
    51 

は今、私はfは

f = 

    0 
    6 
    2 
ようになりたい:私の例では

は、私は次のしようとしています

しかし、私のコードは私が望むものを返しません。どんな助けでも大歓迎です!

+0

は終わっ読む[検索](http://nl.mathworks.com/help/matlab/ref/find.html)と実装しようとしましそれ。それがうまくいかない場合は、あなたが試したものであなたの質問を編集してください。 – Johannes

+0

私はfindの指示を読んでいますが、私はすでにインデックスを知っているので、私の問題では役に立たないと思っています。マトリックスから特定の要素を取得したいだけです。とにかく答えてくれてありがとう。 – Thanasis

答えて

4

sub2ind機能を経由して線形インデックスを使用してみてください:

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

うまくいった!迅速な返信をありがとう! – Thanasis

関連する問題