Конкатенация структур

В этом примере показано, как объединить массивы структур с помощью [] оператор. Для конкатенации структур они должны иметь одинаковый набор полей, но поля не должны содержать одинаковые размеры или типы данных.

Создайте скалярные (1 на 1) массивы структур struct1 и struct2, каждый с полями a и b:

struct1.a = 'first';
struct1.b = [1,2,3];
struct2.a = 'second';
struct2.b = rand(5);
struct1,struct2
struct1 = struct with fields:
    a: 'first'
    b: [1 2 3]

struct2 = struct with fields:
    a: 'second'
    b: [5x5 double]

Точно так же, как конкатенирование двух скалярных значений, таких как [1,2] создает числовой массив 1 на 2, конкатенируя struct1 и struct2 создает массив структур 1 на 2.

combined = [struct1,struct2]
combined=1×2 struct array with fields:
    a
    b

Когда необходимо получить доступ к содержимому конкретного поля, задайте индекс структуры в массиве. Для примера обратитесь к a поля первой структуры.

combined(1).a
ans = 
'first'

Конкатенация также применяется к нескалярным массивам структур. Например, создайте массив структур 2 на 2 с именем new. Потому что структура 1 на 2 combined и структуру 2 на 2 new оба имеют два столбца, можно сцепить их вертикально с диафрагмой с точки с запятой.

new(1,1).a = 1;
new(1,1).b = 10;
new(1,2).a = 2;
new(1,2).b = 20;
new(2,1).a = 3;
new(2,1).b = 30;
new(2,2).a = 4;
new(2,2).b = 40;

larger = [combined; new]
larger=3×2 struct array with fields:
    a
    b

Доступ к a поля структуры larger(2,1). Он содержит то же значение, что и new(1,1).a.

larger(2,1).a
ans = 1

Похожие темы