求和单元格内的数组



我在MATLAB中有一段代码,它在运行十次的循环中生成1000 x 1000个数组;为了尝试保存所有这些循环,我将这些数组提交到一个单元格;现在我有一个1 x 10单元的nalled PL,每个元素是一个1000 x 1000的数组;我想用最简单的方法求和,这样我就得到了一个1000 x 1000的输出。我试过使用

PLtot = cellfun(@sum,PL, 'UniformOutput',false);

但这对我根本不起作用——有什么想法吗?我相信这应该很简单,但做起来很头疼!

而不是将数组存储到cellarray中。

只需在初始数组中添加一个额外的维度。始终为数组预先分配大小。

PL = zeros(1000,1000,10);

因此,当你想访问每个图像时,它会更容易。对于总数,只需执行:

PLtot = sum(PL,3);

以下对我有效:

PLtot =  sum(cat(3,PL{:}),3);

它将第三维度中的数组连接起来,然后沿着这个维度简单地求和。

您的代码没有错,所以不应该出现错误。我想你只是对结果不满意。

cellfun返回逐列求和向量的单元数组,每个向量都是对单个单元应用求和函数的结果。你只需要把它变换成一个矩阵。

PLtotcell = cellfun(@sum,PL, 'UniformOutput',false); % 
PLtot = cell2mat(PLtotcell');

我不得不说,在你的情况下,这不是最有效的方法。检查其他答案以获得更好的性能。我只是想让你了解你的代码是如何工作的。

最新更新