繁体   English   中英

如何在3D MATLAB矩阵中找到最大元素的位置?

[英]How to find the location of the maximum element in a 3D MATLAB matrix?

我有一个大小为100 * 10 * 1344的3D Matlab矩阵。

我想找到矩阵最大元素的三个索引。

当我尝试使用命令find查找它时,我得到:

>> [i j k]=find(max(A(:))==A)
i =
    52
j =
    9601
k =
     1

但是使用这些索引可以得到以下结果:

>> A(i ,j, k)
??? Index exceeds matrix dimensions.

如何解决问题?

您无法find返回三个索引,只有两个。 第三个输出是值,而不是索引。

我建议您获得一个索引,该索引将成为线性索引 您可以将其直接用于A ,或使用ind2sub转换为三个索引。

例:

A = rand(3,4,5); % example 2D array
ind = find(max(A(:))==A(:));
A(ind) % use linear index directly into A
[ii, jj, kk] = ind2sub(size(A), ind); % or convert to three indices...
A(ii, jj, kk) % ...and use them into A

另外,如果只需要第一次出现最大值(如果有多个),则可以使用max的第二个输出代替find

A = rand(3,4,5); % example 2D array
[~, ind] = max(A(:)); % second output of this function gives position of maximum
A(ind) % use linear index directly into A
[ii, jj, kk] = ind2sub(size(A), ind); % or convert to three indices...
A(ii, jj, kk) % ...and use them into A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM