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

对于二维数组,假设我可以使用 min /max 函数两次。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。因为这是调用函数两次,第二次是在你选择的维度的最小/最大元素向量上。

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

于 2013-06-16T06:05:13.080 回答