我有一个尺寸为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.
如何解决问题??
答案 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