如何以最快的方式计算3D数组中每个“切片”的最大值及其对应的索引?
假设你有 A
,其中包含 n
个切片(这里我将每个切片设置为 10x10,但可以更改为任何大小):
A = rand(10,10,n);
[val,ind] = max(reshape(A,[],n),[],1);
第一个输出变量val
将是一个n元素向量,其中包含所有最大值,第二个输出变量ind
将是重塑后的A
中这些最大值的行索引。
然后您可以获取切片的大小:
sz = size(A);
使用它来找到每个切片中每个最大元素的行(r
)和列(c
):
[r,c] = ind2sub(sz(1:2),ind)
rand
和10x10x6数组A
),最终你会得到类似下面这样的结果(但数值不同):val =
0.99861 0.98895 0.98681 0.99991 0.96057 0.99176
r =
9 7 3 8 2 9
c =
1 1 8 10 10 5
A = rand(10,10,n);
layer_max = max(max(A,[],1),[],2); % 1 x 1 x n matrix, use squeeze to remove extra dims
layer_max = squeeze(layer_max);