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

时间:2016-07-24 18:49:14

标签: matlab

我有一个尺寸为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.

如何解决问题??

1 个答案:

答案 0 :(得分:6)

你不能让find返回三个索引,只有两个。第三个输出是值,而不是索引。

我建议您获得一个索引,然后是linear index。您可以将其直接用于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