В этом примере показано, как объединить массивы структуры с помощью [] оператор. Для конкатенации структур они должны иметь одинаковый набор полей, но поля не должны содержать одинаковые размеры или типы данных.
Создание массивов скалярной структуры (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