すべての行列の合計をセル配列に格納したいと思います。現在私はこれをします
StackSummImage = zeros(size(imageList{1}));
for k = 1:stackSize
StackSummImage = StackSummImage + imageList{k};
end
でも、できれば一行で書きたいです。
N 個の画像のそれぞれが K x K の場合、 を使用cat
してすべての画像を K x K x N 配列に連結し、それを 3 番目の次元に沿って合計できます。
>> imageList = {[1 2; 3 4], [5 6; 7 8], [9 10; 11 12]};
>> stackSummImage = sum(cat(3,imageList{:}),3)
ans =
15 18
21 24
編集:メモリの制限のため、単一の配列を作成できないとコメントで述べました。以下は、最初に double の 1500x1500x1500 配列 (約 30 GB を要します) を割り当てて割り当てを解除し、続いて 1500x1500 の double 配列である 1500 配列のセル配列を割り当てたときのメモリ使用プロファイルです。ご覧のとおり、合計メモリ使用量はどちらの場合も同じです。
この行は次のことを行う必要があります。
StackSummImage = sum([imageList{:}])