我希望将所有矩阵的总和存储在单元格数组中。目前我这样做
StackSummImage = zeros(size(imageList{1}));
for k = 1:stackSize
StackSummImage = StackSummImage + imageList{k};
end
但如果可能的话,我宁愿把它写在一行。
答案 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双数组。如您所见,两种情况下的总内存使用量相同。
答案 1 :(得分:-1)
这一行应该:
StackSummImage = sum([imageList{:}])