Matlab: как объединить поля структурного массива? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть массив структур, в котором каждое значение является числом, я хотел бы объединить эти структуры в одну.

Пример:

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

cat (S) должна быть структурой 'CAT' с полями:

CAT.a = [1 2]
CAT.b.c = [1 3]
CAT.b.d = [2 4]

1 Ответ

0 голосов
/ 02 июля 2018

Я не нашел ни одной функции matlab для этого, поэтому я запрограммировал эту функцию:

function out = catStruct(in)
% cat structure field per field

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

Если я сделаю CAT = catStruct (S), я получу то, что хочу.

...