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

时间:2010-04-14 05:41:29

标签: matlab multidimensional-array indexing max min

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

对于二维数组,比方说我 你可以使用两次最小/最大功能。 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. 

您也可以将尺寸参数min / max设置为2。因为这是两次调用函数,第二次调用维度u的最小/最大元素向量。

同样,您可以(max(max(a,[],1))找出最大值。