我有一个大小为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
答案 0 :(得分:3)
通过第4维将它们连接起来,然后在该维度上应用min
函数:
minRes = min(cat(4,relevanceCell{:}),[],4);
为了更通用,您可以找到数组的维数并适应:
nextDim = 1 + ndims(relevanceCell{1});
minRes = min(cat(nextDim,relevanceCell{:}),[],nextDim);