MATLAB で多次元行列の最大値または最小値を見つけるにはどうすればよいですか?[重複]

StackOverflow https://stackoverflow.com/questions/2635120

質問

この質問にはすでに答えがあります:

MATLAB に測定値の 4D 配列があります。各次元は、測定の異なるパラメータを表します。最大値と最小値とインデックスを見つけたいです(つまり、どのパラメータ)。

最善の方法は何ですか?各次元の最大値の最大値を取得できると思いますが、それは面倒なようです。

役に立ちましたか?

解決

クイック例:

%# random 4 d array with different size in each dim
A = rand([3,3,3,5]);

%# finds the max of A and its position, when A is viewed as a 1D array
[max_val, position] = max(A(:)); 

%#transform the index in the 1D view to 4 indices, given the size of A
[i,j,k,l] = ind2sub(size(A),position);

最小を見つけることが課題として残されている:。)

コメント次のとおりです。 あなたは、配列Aの次元数を知らないので、「[i,j,k,l] =」の部分を書き込むことができない場合は、このトリックを使用します:

indices = cell(1,length(size(A)));

[indices{:}] = ind2sub(size(A),position);

他のヒント

2次元配列のために、私は言います あなたは2回だけ最小/最大機能を使用することができます。 N N次元のアレイのための時間。 例えば:a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];

for minimum:  min(min(a,[],1))
             ->  the answer will be -2. 

あなたは同様に2最小/最大の寸法パラメータを置くことができます。これはuが選択した次元の最小/最大要素ベクトルで、1秒間に2回、時間を関数を呼び出しているようます。

同様に、あなたは最大を見つけるために(max(max(a,[],1))を行うことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top