如何求和相应单元格索引中的值?

How to sum up values in corresponding indexes of cells?

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

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

中所有矩阵的第 (j,k) 个元素的总和

我为此编写的代码是:

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,:} 部分)。

任何人都可以告诉我如何去做吗?

怎么样

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

这里发生了什么?
首先,我们通过"stacking"三维上的2D元胞元素,将元胞数组转化为3D数组:

cat(3, chaining{:})

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

sum( ..., 3 );

有关详细信息,请参阅 cat and sum 帮助页面。


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