如何在MATLAB中找到多维矩阵的最大值或最小值?

Nat*_*man 10 indexing matlab max min multidimensional-array

我在MATLAB中有一个4D测量数组.每个维度代表测量的不同参数.我想找到每个的最大值和最小值以及索引(即哪个参数).

最好的方法是什么?我想我可以在每个维度中取最大值的最大值,但这看起来像一个kludge.

Adr*_*ien 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);
Run Code Online (Sandbox Code Playgroud)

找到最小值留作练习:).

评论之后:如果您不知道阵列A的维数,因此无法编写" [i,j,k,l] ="部分,请使用此技巧:

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

[indices{:}] = ind2sub(size(A),position);
Run Code Online (Sandbox Code Playgroud)