0

我有一个mat2cell A12*12 块单元格,每个单元格 8*8 像素。然后我有mat2cell B8*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 像素的单元。如果您要将 A 的每个元素添加到 B,那么首先将 A 的所有元素添加到一起,然后再一次添加到 B。

所以从 A 开始,这会给你一个 3 维数值数组 - 第 3 维是你的 144 个单元格

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

然后,您可以对 3 维上的所有像素求和,将结果放回元胞数组中

Asum = {sum(A3D,3)};

现在,您在 8*8 像素的单个单元格中获得了 A 的总和值,然后您可以将其复制以匹配数组 B 的大小。

AA = repmat(Asum,8,8);

最后添加两个单元格数组使用 cellfun

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

这将添加 A 的每个元素,从 A{1,1} 到 A{12,12} 到 B{1,1} 然后 B{1,2} 等等直到 B{8,8}

于 2013-01-23T11:22:06.970 回答