对单元结构内的matlab数组求和

时间:2018-07-01 18:29:51

标签: arrays matlab structure cell

我有一个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 {:}])),但是我只希望每个求和中的特定字段。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能有更多的“ 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

这假设您要对问题中出现的所有S{1...N, 1}.AS{1...N, 2}.B等进行求和。如果您也想要S{1...N, 1}.B,则需要sumStruct的第3个循环和2个索引-实现起来应该相对简单。