【问题标题】:Summing arrays inside cells对单元格内的数组求和
【发布时间】:2013-12-04 17:28:46
【问题描述】:

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

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

但这对我来说根本不起作用 - 有什么想法吗?我敢肯定这应该很简单,但做起来头疼!

【问题讨论】:

  • 你的编程语言是什么?
  • 抱歉,我应该说明这一点 - 它在 MATLAB 中...(我现在将添加到标签中!)

标签: arrays matlab sum cell cell-formatting


【解决方案1】:

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

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

PL = zeros(1000,1000,10);

因此,当您想要访问每张图片时,它会更容易。总而言之:

PLtot = sum(PL,3);

【讨论】:

  • 你的意思是PLtot = sum(PL,3);
  • 对此深感抱歉。
【解决方案2】:

以下对我有用:

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

它连接第三维中的数组,然后简单地沿该维求和。

【讨论】:

    【解决方案3】:

    您的代码没有错误,因此您不应该收到错误。我认为你只是对结果不满意。

    cellfun 为您返回列和向量的单元格数组,每个单元格都是将 sum 函数应用于单个单元格的结果。您只需要将其转换为矩阵即可。

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 2013-02-22
      • 2016-12-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      相关资源
      最近更新 更多