Для генерации кода, когда вы создаете массив структур MATLAB®, соответствующие поля в элементах массива должны иметь тот же размер, ввести, и сложность.
Если вы создали массив структур, можно сделать полевой переменный размер структуры при помощи coder.varsize
. Смотрите Объявляют Поля Структуры Переменного Размера.
Можно создать массив структур от скалярной структуры при помощи функции repmat
MATLAB, которая реплицирует и размещает существующую скалярную структуру рядом:
Создайте скалярную структуру, как описано в Задают Скалярные Структуры для Генерации кода.
Вызовите 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'});
Чтобы создать небольшой массив структур, можно использовать оператор конкатенации, квадратные скобки ( [ ]
), чтобы соединить одну или несколько структур в массив. Смотрите Создание, конкатенацию и расширение матрицы (MATLAB). Для генерации кода структуры, которые вы конкатенируете, должны иметь тот же размер, класс и сложность.
Например, следующий код использует конкатенацию и локальную функцию, чтобы создать элементы массива 1 3 массив структур:
... W = [ sab(1,2) sab(2,3) sab(4,5) ]; function s = sab(a,b) s.a = a; s.b = b; ...