我有一个mat2cell A
12 * 12块的单元格,每个单元格有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}相同,依此类推。
答案 0 :(得分:0)
我并不完全清楚"whole cell in mat2cell A"
你的意思。在A中你有144(12 * 12)个单元格,你想将每个单元格添加到B中的每个单元格中吗?
如果是这种情况,那么我首先将A中的所有144个单元缩小为一个8 * 8像素的单元。如果要将A的每个元素添加到B,那么首先将A的所有元素添加到一起,然后一次性添加到B.
所以从A开始,这将为您提供一个三维数值阵列 - 第三维度是您的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 }