2012-11-29 62 views
3

我想要将所有矩阵的和存储在单元阵列中。目前我这样做创建单元格矩阵的总和

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

但我宁愿想写在一条线,如果可能的话。

回答

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

+0

我无法创建这样的数组。我将数据保存在单元阵列中,因为整个数据是4-10 GB。 –

+0

@MatthiasPospiech为什么你认为在一个单元阵列中占用更少的空间? – angainor

+0

由于单元格是指向数组的指针,并且单个3D数组是内存中的单个块。我可以用单元格加载所有数据,但如果我尝试分配单个3D数组,则无法加载。 –

-1

此行应该做的:

StackSummImage = sum([imageList{:}]) 
+0

这将导致在载体中,而不是相同的尺寸与原始图像的阵列。 –