3

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

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

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

4

2 回答 2

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 的双精度数组。如您所见,两种情况下的总内存使用量是相同的。

在此处输入图像描述

于 2012-11-29T12:51:48.177 回答
-1

这条线应该做:

StackSummImage = sum([imageList{:}])
于 2012-11-29T12:49:22.033 回答