Для генерации кода, когда вы создаете массив MATLAB® структуры, соответствующие поля в элементах массива должны иметь одинаковый размер, тип и сложность.
После создания массива структур можно изменить размер полей структуры при помощи coder.varsize
(MATLAB Coder). См. Раздел «Объявление структурных полей переменного размера» (MATLAB Coder).
Можно создать массив структур из скалярной структуры с помощью MATLAB repmat
функция, которая наследует и плитит существующую скалярную структуру:
Создайте скалярную структуру, как описано в Define Scalar Structures for Генерация Кода.
Звонить 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
function, задайте аргументы значения поля как массивы ячеек. Каждый элемент массива ячеек является значением поля в соответствующем элементе массива структур. Для генерации кода соответствующие поля в структурах должны иметь тот же тип. Поэтому элементы массива ячеек со значениями полей должны иметь тот же тип.
Для примера следующий код создает массив структур 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; ...