0

12*12 ブロックのセルがmat2cell Aあり、各セルは 8*8 ピクセルです。次にmat2cell B、各セルが 8*8 ピクセルの 8*8 ブロック セルがあります。

mat2cell Bのすべてのセルを のセル全体で加算する操作を行いたいmat2cell A

A = mat2cell(x, [8 8 8 8 8 8 8 8 8 8 8 8] , [8 8 8 8 8 8 8 8 8 8 8 8]);
B = mat2cell(y, [8 8 8 8 8 8 8 8] , [8 8 8 8 8 8 8 8]);

A{1,1}各セルに追加したいB{1,1}, B{1,2}, B{3,5}, A{1,2} と同じなど.

4

1 に答える 1

0

の意味がよくわかりません"whole cell in mat2cell A"。A には 144 (12*12) 個のセルがあり、これらのセルをすべて B の各セルに追加しますか?

この場合、A の 144 個のセルすべてを 8*8 ピクセルの 1 つのセルに凝縮することから始めます。A のすべての要素を B に追加する場合は、最初に A のすべての要素を一緒に追加してから、B に一度に追加します。

Aから始めると、これにより3次元の数値配列が得られます.3次元は144個のセルです

Amat=cell2mat(A(:)');
A3D = reshape(b,8,8,144);

次に、3 次元に沿ってすべてのピクセルを合計し、結果を cell 配列に戻すことができます。

Asum = {sum(A3D,3)};

これで、A の合計値が 8*8 ピクセルの 1 つのセルに格納され、これを複製して配列 B のサイズに合わせることができます。

AA = repmat(Asum,8,8);

最後に、2 つの cell 配列を追加するには、cellfun を使用します。

C = cellfun(@plus,AA,B,'UniformOutput',false);

これは、A{1,1} から A{12,12} までの A のすべての要素を B{1,1} に、次に B{1,2} などを B{8,8} まで追加します。

于 2013-01-23T11:22:06.970 に答える