我有一个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 {:}])),但是我只希望每个求和中的特定字段。有什么想法吗?
答案 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}.A
,S{1...N, 2}.B
等进行求和。如果您也想要S{1...N, 1}.B
,则需要sumStruct
的第3个循环和2个索引-实现起来应该相对简单。