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 配列に連結し、それを 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 配列のセル配列を割り当てたときのメモリ使用プロファイルです。ご覧のとおり、合計メモリ使用量はどちらの場合も同じです。

ここに画像の説明を入力

于 2012-11-29T12:51:48.177 に答える
-1

この行は次のことを行う必要があります。

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