10

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

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

4

2 に答える 2

34

簡単な例:

%# 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);
于 2010-04-14T10:17:47.923 に答える
0

2 次元配列の場合、min / max 関数を 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 に設定することもできます。これは関数を 2 回呼び出しているため、選択した次元の最小/最大要素ベクトルで 2 回目です。

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

于 2013-06-16T06:05:13.080 に答える