【问题标题】:How to sum up values in corresponding indexes of cells?如何总结单元格相应索引中的值?
【发布时间】:2017-02-19 15:17:19
【问题描述】:

我有一个名为chaining1x24 单元格数组,其每个单元格都包含一个119x119 矩阵:

我想找到所有单元格的每个对应元素的总和,并将它们存储在一个名为result 的矩阵中。也就是说,result(j,k)th 元素应该包含元胞数组chaining 中所有矩阵的(j,k)th 元素之和。

我为此编写的代码是:

for j=1:size(chaining,2)
    for k=1:size(chaining,2)
        result(j,k) = sum(chaining{1,:}(j,k));
    end
end

但这会产生错误,因为显然 MATLAB 出于某种原因(即 chaining{1,:} 部分)无法聚合元胞数组。

谁能告诉我怎么做?

【问题讨论】:

  • 在Matlab中使用j作为变量名is not recommended
  • @Shai 哦,解决复数,明白了。谢谢:)

标签: matlab cell-array


【解决方案1】:

怎么样

result = sum( cat(3, chaining{:}), 3 );

刚刚发生了什么?
首先,我们通过将 2D 单元格元素“堆叠”在第三维上,将单元格数组转换为 3D 数组:

cat(3, chaining{:})

一旦我们有了size 119-by-119-by-24 的 3D 数组,我们就可以沿第三维求和,得到 resultsize 119-by-119:

sum( ..., 3 );

有关详细信息,请参阅 catsum 帮助页面。


顺便说一句,
如果您坚持使用chaining{1,:}(jj,kk) 类型的解决方案(不推荐),您可能会发现subsref command 很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多