Для генерации кода, когда вы создаете массив структур MATLAB®, соответствующие поля в элементах массива должны иметь тот же размер, ввести, и сложность.
Если вы создали массив структур, можно сделать полевой переменный размер структуры при помощи coder.varsize
(MATLAB Coder). Смотрите объявляют поля структуры Переменного Размера (MATLAB Coder).
Можно создать массив структур от скалярной структуры при помощи MATLAB repmat
функция, которая реплицирует и размещает существующую скалярную структуру рядом:
Создайте скалярную структуру, как описано в Задают Скалярные Структуры для Генерации кода.
Вызвать repmat
, передача скалярной структуры и размерностей массива.
Присвойте значения каждой структуре с помощью стандартной индексации массива и записи через точку структуры.
Например, следующий код создает X
, 1 3 массив скалярных структур. Каждый элемент массива задан структурой s
, который имеет два поля, a
и b
:
... s.a = 0; s.b = 0; X = repmat(s,1,3); X(1).a = 1; X(2).a = 2; X(3).a = 3; X(1).b = 4; X(2).b = 5; X(3).b = 6; ...
struct
Создать массив структур с помощью struct
функционируйте, задайте аргументы значения поля как массивы ячеек. Каждым элементом массива ячеек является значение поля в соответствующем элементе массива структур. Для генерации кода соответствующие поля в структурах должны иметь тот же тип. Поэтому элементы в массиве ячеек значений полей должны иметь тот же тип.
Например, следующий код создает 1 3 массив структур. Для каждой структуры в массиве структур, a
имеет вводят double
и b
имеет вводят char
.
s = struct('a', {1 2 3}, 'b', {'a' 'b' 'c'});
Чтобы создать небольшой массив структур, можно использовать оператор конкатенации, квадратные скобки ( [ ]
), чтобы соединить одну или несколько структур в массив. Смотрите Создание, конкатенацию и расширение матрицы. Для генерации кода структуры, которые вы конкатенируете, должны иметь тот же размер, класс и сложность.
Например, следующий код использует конкатенацию и локальную функцию, чтобы создать элементы массива 1 3 массив структур:
... W = [ sab(1,2) sab(2,3) sab(4,5) ]; function s = sab(a,b) s.a = a; s.b = b; ...