创建单元矩阵之和

时间:2012-11-29 12:47:01

标签: matlab octave cells

我希望将所有矩阵的总和存储在单元格数组中。目前我这样做

StackSummImage = zeros(size(imageList{1}));
for k = 1:stackSize
     StackSummImage = StackSummImage + imageList{k};
end

但如果可能的话,我宁愿把它写在一行。

2 个答案:

答案 0 :(得分:4)

如果N个图像中的每一个都是K x K,则可以使用cat将所有图像连接成K x K x N数组,然后沿第三维求和:

>> imageList = {[1 2; 3 4], [5 6; 7 8], [9 10; 11 12]};
>> stackSummImage = sum(cat(3,imageList{:}),3)
ans =
15    18
21    24

编辑:您在评论中提到由于内存限制,您无法创建单个阵列。下面是我第一次分配1500x1500x1500双精度数组(大约需要30 GB)并解除分配时的内存使用情况配置文件,然后分配1500个数组的单元阵列,每个数组都是1500x1500双数组。如您所见,两种情况下的总内存使用量相同。

enter image description here

答案 1 :(得分:-1)

这一行应该:

StackSummImage = sum([imageList{:}])
相关问题