如何求和相应单元格索引中的值?
How to sum up values in corresponding indexes of cells?
我有一个名为 chaining
的 1x24
元胞数组,其每个元胞包含一个 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 数组,我们就可以沿第三维求和并得到 result
的 size
119×- 119:
sum( ..., 3 );
顺便说一句,
如果您坚持 chaining{1,:}(jj,kk)
类型的解决方案(不推荐),您可能会发现 subsref
command 有用。
我有一个名为 chaining
的 1x24
元胞数组,其每个元胞包含一个 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 数组,我们就可以沿第三维求和并得到 result
的 size
119×- 119:
sum( ..., 3 );
顺便说一句,
如果您坚持 chaining{1,:}(jj,kk)
类型的解决方案(不推荐),您可能会发现 subsref
command 有用。