【问题标题】:sum matlab arrays within cell structure对单元结构内的matlab数组求和
【发布时间】:2018-07-01 18:29:50
【问题描述】:

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

【问题讨论】:

  • 你能提供你所拥有的样品吗?每个单元格是否只有一个字段?
  • 请举个例子。
  • S{3,1} 可能包含:S{3,1}.A, S{3,1}.B, S{3,1}.C, ..., S{ 3,1}.L 其中 A、B、C、D ... L 都是 50 x 50 数组。我想将 S{3,1}.A 与 S{4,1}.A, S{5,1}.A, ..., S{n,1}.A 相加,然后将 S{3 相加, 1}.B with S{4,1}.B, S{5,1}.B, ..., S{n,1}.B A, B, C, D, ...的数组, L 是一个简单的 50x50 数字数组。我可以做到:对于 m = 50 对于 n = 50 S{3,1}.A(m,n) + S{4,1}.A(m,n) + ... 但这很长,我想尝试用更好的代码自动化它。

标签: arrays matlab structure cell


【解决方案1】:

可能有更多“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 的两个索引——实现起来应该相对简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2012-05-11
    • 1970-01-01
    相关资源
    最近更新 更多