按元素对 R x 1 元胞数组中的 M x N x P 数组求和
Sum M x N x P arrays in a R x 1 cell array element by element
我有一个 R x 1 元胞数组(R 是行数),其中每个条目都是一个 M x N x P 数组。如何对元胞数组中的每个数组求和,以便将每个条目添加到每个 M x N x P 数组中?我可以用 cellfun
来做吗?
我在类似的问题中发现了这个 method,但它 returns 一个 1 x N x P 数组而不是 M x N x P 数组(参见 B
)或我收到错误 "Error using cell2mat Too many input arguments"(请参阅 C
)。
M = 3;
N = 2;
P = 4;
A{1,1} = ones(M,N,P);
A{1,2} = 2*ones(M,N,P);
A{1,3} = 3*ones(M,N,P);
B = sum([A{:}]);
C = sum(cell2mat(A{:}),1);
我希望得到一个 M x N x P 数组,但其中每个元素都是每个单元格条目的 i、j、k 位置中所有元素的总和。
B(1,1) = 6 % for all entries
为什么首先要有元胞数组?你可以把所有等尺寸的三维数组存储到一个4维数组中,然后你想要的只是第四维的总和。
如果您确实需要元胞数组,请先沿第四维连接以创建 4D 数组,然后求和:
result = sum(cat(4, A{:}), 4);
如果您需要将元胞数组 和 串联成一个 4 维数组,但由于内存不足而出现错误,您可能需要求助于循环:
result = zeros(size(A{1}));
for k = 1:numel(A)
result = result + A{k};
end
您不能使用 cellfun
,至少不能以自然的方式使用,因为 cellfun
将函数应用于 每个单元格 ,而您想要应用所有单元格的每个条目的函数(求和)。
我有一个 R x 1 元胞数组(R 是行数),其中每个条目都是一个 M x N x P 数组。如何对元胞数组中的每个数组求和,以便将每个条目添加到每个 M x N x P 数组中?我可以用 cellfun
来做吗?
我在类似的问题中发现了这个 method,但它 returns 一个 1 x N x P 数组而不是 M x N x P 数组(参见 B
)或我收到错误 "Error using cell2mat Too many input arguments"(请参阅 C
)。
M = 3;
N = 2;
P = 4;
A{1,1} = ones(M,N,P);
A{1,2} = 2*ones(M,N,P);
A{1,3} = 3*ones(M,N,P);
B = sum([A{:}]);
C = sum(cell2mat(A{:}),1);
我希望得到一个 M x N x P 数组,但其中每个元素都是每个单元格条目的 i、j、k 位置中所有元素的总和。
B(1,1) = 6 % for all entries
为什么首先要有元胞数组?你可以把所有等尺寸的三维数组存储到一个4维数组中,然后你想要的只是第四维的总和。
如果您确实需要元胞数组,请先沿第四维连接以创建 4D 数组,然后求和:
result = sum(cat(4, A{:}), 4);
如果您需要将元胞数组 和 串联成一个 4 维数组,但由于内存不足而出现错误,您可能需要求助于循环:
result = zeros(size(A{1}));
for k = 1:numel(A)
result = result + A{k};
end
您不能使用 cellfun
,至少不能以自然的方式使用,因为 cellfun
将函数应用于 每个单元格 ,而您想要应用所有单元格的每个条目的函数(求和)。