Задайте массивы структур для генерации кода

Обеспечение согласованности полей

Для генерации кода, когда вы создаете массив MATLAB® структуры, соответствующие поля в элементах массива должны иметь одинаковый размер, тип и сложность.

После создания массива структур можно изменить размер полей структуры при помощи coder.varsize. См. Раздел «Объявление структурных полей переменного размера»

Использование repmat для определения массива структур с допустимыми свойствами поля

Можно создать массив структур из скалярной структуры с помощью MATLAB repmat функция, которая наследует и плитит существующую скалярную структуру:

  1. Создайте скалярную структуру, как описано в Define Scalar Structures for Генерация Кода.

  2. Звонить repmat, передающая скалярную структуру и размерности массива.

  3. Присвоение значения в каждую структуру с помощью стандартной индексации массивов и структурных записей через точку.

Например, следующий код создает 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;
...