[英]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.