[英]Find the position of the minimal value of a three dimensional array in Matlab
很抱歉提出这么简单愚蠢的问题,但Matlab真的太难用了。 我的问题是如何在Matlab中找到三维数组最小值的位置。
例如,假设我定义了一个三维数组
m=zeros(2,2,2);
m(1,2,2)=-2;
m
的最小值应为-2
,位于(1,2,2)
。 我可以找到最小值
m0=min(min(min(m)));
但是当我通过使用找到它的位置
[x y z]=find(m==m0);
而不是返回x=1
, y=2
和z=2
,它返回x=1
, y=4
和z=1
。
我很感激有人会回答这个问题!
你说的没错。 这比它应该更复杂。 问题是MATLAB
硬连线使用矩阵(即等级2的数组),而不是一般等级的数组。 这是解决方案:
m0 = min(m(:))
[x y z] = ind2sub(size(m), find(m(:) == m0))
说明:
如果您键入help find
,您可能会注意到您的原始代码使用了find
的[rows, cols, vals]
版本,这不是您所期望的。
相反, min(m(:))
是你的min(min(min(m)))
的简化。 它自动将m
重塑为一级数组(即向量)。
表达式find(m(:) == m0)
返回此重新形状向量中最小位置的单个索引。 最后, ind2sub
将此单个索引转换为一组三个索引,给定m
的形状。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.