3D配列の各スライスの最大値とそれに対応するインデックスを計算する最速の方法は何ですか?そして、あなたはn列の行列にそれを再構築することができますMATLABで3Dアレイの各スライスの最大値と位置を見つけるにはどうすればよいですか?
A = rand(10,10,n);
:
3D配列の各スライスの最大値とそれに対応するインデックスを計算する最速の方法は何ですか?そして、あなたはn列の行列にそれを再構築することができますMATLABで3Dアレイの各スライスの最大値と位置を見つけるにはどうすればよいですか?
A = rand(10,10,n);
:
あなたは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
、あなたはそれぞれの層の最大
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);
グレート溶液で1×1 XN行列を取得するために、2つのステップで
max
関数を適用することができます - 両方の最大値とforループを使用せずに索引を復元しました。ありがとうございました! –