如何在matlab中对结构数组求和?

时间:2018-07-02 12:01:59

标签: matlab recursion

我有一个结构数组,其中每个值都是一个数字,我想对这些结构求和。

示例:

S是结构数组,每个元素都具有相同的结构

S(1).a = 1
S(1).b.c = 1
S(1).b.d = 2

S(2).a = 2
S(2).b.c = 3
S(2).b.d = 4

sum(S)应该是具有字段的结构“ SUM”:

SUM.a = 1+2 = 3
SUM.b.c = 1+3 = 4
SUM.b.d = 2+4 = 6

1 个答案:

答案 0 :(得分:3)

我没有找到任何可实现此目的的matlab函数,因此我对该函数进行了编程:

function out = sumStruct(in)
% sum structure field per field

    if isstruct(in)
        for f = fields(in)'
            out.(f{:}) = sumStruct([in.(f{:})]);
        end
    else
        out = sum(in);
    end
end

如果我做SUM = sumStruct(S),我会得到想要的东西。