首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中求出三维阵列各切片的最大值和位置?

如何在MATLAB中求出三维阵列各切片的最大值和位置?
EN

Stack Overflow用户
提问于 2017-05-30 13:14:11
回答 2查看 815关注 0票数 3

计算3D数组的每个“切片”的最大值及其对应索引的最快方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-30 13:22:49

假设您有带有An片(这里我刚刚制作了每片10乘10,但这可以更改为任意大小):

代码语言:javascript
复制
A = rand(10,10,n);

您可以将其重塑为n列矩阵,然后取每列的最大值:

代码语言:javascript
复制
[val,ind] = max(reshape(A,[],n),[],1);

第一个输出val将是具有所有最大值的n元素向量,而第二个输出ind将是它们在重塑的A中的行索引。

然后你得到切片的大小:

代码语言:javascript
复制
sz = size(A);

并使用它查找每个片中每个最大元素的行(r)和列(c):

代码语言:javascript
复制
[r,c] = ind2sub(sz(1:2),ind)

因此,在本例中(使用rand和10x10x6数组用于A),您将在末尾得到类似的内容(但值不同):

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2017-05-30 13:36:45

如果您有一个带有n层的矩阵A,您可以分两步应用max函数,得到每个层的最大值为1x1xn的矩阵

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44263325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档