Вы можете расширить массив struct с помощью индексации, не назначая каждое из полей, например:
s(2).a = 10;
s(2).b = 11;
В этом случае поле c
остается пустым (то есть []
).Нет необходимости, чтобы поля имели одинаковые типы, если s(1).c
является структурой, тогда s(2).c
может быть массивом или строкой или чем угодно.
С помощью deal
вы можете включитьэто в одну строку:
[ s(2).a , s(2).b ] = deal( 10 , 11 );
Чтобы создать все элементы структуры s(1).c
за один раз, вы можете использовать следующий синтаксис для struct
:
s(1).c = struct('x',{4,6,8}, 'y',{5,7,9});
Поля данных здесь представляют собой массив ячеек, где каждый элемент массива ячеек указывает значение для этого поля в одном из элементов массива структуры.
Конечно, вы можете объединить создание целогоc(1)
в одну команду:
s(1) = struct('a', 2, 'b', 3, 'c', struct('x',{4,6,8}, 'y',{5,7,9}));
Аналогичным образом вы можете создать создание как s(1)
, так и s(2)
за один раз:
s = struct('a', {2,10}, 'b', {3,11}, 'c', {struct('x',{4,6,8}, 'y',{5,7,9}),[]});
.... но это становится все более громоздким, чтобы писать в одной строке кода.Используйте эллипсы, чтобы сделать его более читабельным:
s = struct('a',{ 2, 10 }, ...
'b',{ 3, 11 }, ...
'c',{ struct('x',{4,6,8}, 'y',{5,7,9}), [] });