2017-05-30 5 views

答えて

4

あなたはnスライス(ここでは、私はちょうど10によって各スライス10を作ったが、これは任意のサイズに変更することができます)とAを持っていると言います各列の最大値を取る:

[val,ind] = max(reshape(A,[],n),[],1); 

第一出力valは全て最大値をN要素ベクトルとなり、第2の出力indは再形成Aにおけるそれらの行インデックスであろう。

次にあなたがスライスのサイズを取得:

sz = size(A); 

と行を見つけるためにそれを使用(r)と各スライスの各最大要素の列(c):

[r,c] = ind2sub(sz(1:2),ind) 

をしたがって、この例では(Aの場合はrandと10x10x6の配列を使用します)、最後に次のような値が得られます(値は異なります)。

あなたは n層を有する行列Aを持っている場合は
val = 
     0.99861  0.98895  0.98681  0.99991  0.96057  0.99176 
r = 
    9  7  3  8  2  9 
c = 
    1  1  8 10 10  5 
+0

グレート溶液で1×1 XN行列を取得するために、2つのステップでmax関数を適用することができます - 両方の最大値とforループを使用せずに索引を復元しました。ありがとうございました! –

0

、あなたはそれぞれの層の最大

A = rand(10,10,n); 
layer_max = max(max(A,[],1),[],2); % 1 x 1 x n matrix, use squeeze to remove extra dims 
layer_max = squeeze(layer_max); 
関連する問題