MATLAB に 4D 配列の測定値があります。各次元は、測定の異なるパラメーターを表します。それぞれの最大値と最小値、およびインデックス (つまり、どのパラメーター) を見つけたいと考えています。
それを行う最良の方法は何ですか?各次元で最大の最大の最大値を取得できると思いますが、それはおかしなことのようです。
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 次元配列の場合、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))
、最大値を見つけるために行うことができます。