MATLAB:对单元格对象的每元素最小操作

时间:2016-05-16 11:16:02

标签: matlab

我有一个大小为nx1的单元格对象,在每个坐标处都包含一个大小为mxnxk的矩阵。

作为输出,我想获得一个大小为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

1 个答案:

答案 0 :(得分:3)

通过第4维将它们连接起来,然后在该维度上应用min函数:

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

为了更通用,您可以找到数组的维数并适应:

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