В этом примере показано, как конкатенировать массивы структур с помощью []
оператор. Чтобы конкатенировать структуры, у них должен быть тот же набор полей, но поля не должны содержать те же размеры или типы данных.
Создайте скалярные массивы структур (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
Поле Access a
из структуры larger(2,1)
. Это содержит то же значение как new(1,1).a
.
larger(2,1).a
ans = 1