2016-05-16 10 views
0

各座標にmxnxkのサイズの行列を含むnx1サイズのセルオブジェクトがあります。MATLAB:セルオブジェクトの要素ごとの最小操作

出力として、セル内のすべての行列のピクセル単位の最小演算の結果であるサイズmxnxkの行列を取得したいと思います。

私は現在forループを使用していますが、もっとエレガントなものを使うことをお勧めします。

コード例:

%example for an input (in my case m,n and k are much bigger) 
m = 4; n=3; k=2; 
relevanceCell = {rand(m,n,k),rand(m,n,k),rand(m,n,k)} 

%prints input 
relevanceCell{:} 

%for loop for calculating the per-pixel minimal value. 
minRes = relevanceCell{1}; 
for ii=2:length(relevanceCell) 
    minRes = min(minRes,relevanceCell{ii}); 
end 

%prints output 
minRes 

答えて

3

が4次元を介してそれらを連結し、そのディメンションでmin機能を適用します。

minRes = min(cat(4,relevanceCell{:}),[],4); 

は、より一般的になるには、の次元数を見つけることができます配列に変換し、それに適応する:

nextDim = 1 + ndims(relevanceCell{1}); 
minRes = min(cat(nextDim,relevanceCell{:}),[],nextDim); 
+0

あなたの返信ありがとう!これは良い考えです。これはk = 1の場合に適しています。 k> 1の場合は動作しません。私は私が与えた例が混乱しないように私の質問を修正しました。 – drorco

+0

あなたの行列は3次元であり、4次元で行動する必要があります。私は答えを更新する。 –