我想要将所有矩阵的和存储在单元阵列中。目前我这样做创建单元格矩阵的总和
StackSummImage = zeros(size(imageList{1}));
for k = 1:stackSize
StackSummImage = StackSummImage + imageList{k};
end
但我宁愿想写在一条线,如果可能的话。
我想要将所有矩阵的和存储在单元阵列中。目前我这样做创建单元格矩阵的总和
StackSummImage = zeros(size(imageList{1}));
for k = 1:stackSize
StackSummImage = StackSummImage + imageList{k};
end
但我宁愿想写在一条线,如果可能的话。
如果每个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双精度数组。正如你所看到的,两种情况下的总内存使用率是相同的。
此行应该做的:
StackSummImage = sum([imageList{:}])
这将导致在载体中,而不是相同的尺寸与原始图像的阵列。 –
我无法创建这样的数组。我将数据保存在单元阵列中,因为整个数据是4-10 GB。 –
@MatthiasPospiech为什么你认为在一个单元阵列中占用更少的空间? – angainor
由于单元格是指向数组的指针,并且单个3D数组是内存中的单个块。我可以用单元格加载所有数据,但如果我尝试分配单个3D数组,则无法加载。 –