我在 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);
对于二维数组,假设我可以使用 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))
找出最大值。