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