首页 > 解决方案 > 对单元结构内的matlab数组求和

问题描述

我有一个 221 x 24 单元格数组 S。在每个数组中是另一个数组,由几个不同的字段(我们只说 A、B、C 和 D)组成,其中每个字段(A、B、C、D)是50 x 50 阵列。我只想对数组 S 的每一列中的 A、B、C 和 D 求和。例如:

S{1,1}.A + S{2,1}.A + ... + S{23,1}.A ...

S{1,2}.B + S{2,2}.B + ... + S{153,2}.B ...

S{111,3}.C + S{117,3}.C + ... + S{230,3}.C ...

最简单的方法是什么?我知道如果结构中没有字段(例如 sum([S{:}]) ),则有一个求和函数,但我只想要每个求和中的特定字段。有什么想法吗?

标签: arraysmatlabstructurecell

解决方案


可能有更多“MATLABy”的方式来避免循环并使这更简单,但这个循环应该相当简单:

FN = fieldnames(S{1});
for i = 1 : size(S, 1)
   sumStruct{i} = 0;
   for j = 1 : size(S, 2)
      sumStruct{i} = sumStruct{i} + S{i,j}.(FN{j});
   end
end

这假设您想要 sum of all S{1...N, 1}.AS{1...N, 2}.B依此类推,如问题中所示。如果你也想要S{1...N, 1}.B,你需要第三个循环和 2 个索引sumStruct——它应该相对简单地实现。


推荐阅读