计算3D数组的每个“切片”的最大值及其对应索引的最快方法是什么?
发布于 2017-05-30 13:22:49
假设您有带有A的n片(这里我刚刚制作了每片10乘10,但这可以更改为任意大小):
A = rand(10,10,n);您可以将其重塑为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发布于 2017-05-30 13:36:45
如果您有一个带有n层的矩阵A,您可以分两步应用max函数,得到每个层的最大值为1x1xn的矩阵
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);https://stackoverflow.com/questions/44263325
复制相似问题