Чтобы повысить скорость выполнения алгоритмов или упростить интеграцию с внешним кодом или данными, можно определить сопоставления замены кода, которые применяют определенный макет для хранения элементов массива в памяти. По умолчанию генератор кода хранит элементы массива в макете «основной столбец». Чтобы изменить формат на «строка-основная», измените значение параметра записи. ArrayLayout кому ROW_MAJOR.
В следующем файле определения таблицы для операции суммирования используется компоновка основной строки массива.
Создайте файл определения таблицы, содержащий определение функции. Например:
function hTable = crl_table_rowmajor_matrix
В теле функции создайте таблицу путем вызова функции. RTW.TflTable.
hTable = RTW.TflTable;
Создание записи для сопоставления оператора с вызовом RTW.TflCOperationEntry функция.
% Create operation entry hEnt = RTW.TflCOperationEntry;
Установка параметров ввода оператора с вызовом setTflCOperationEntryParameters функция. В вызове функции установите параметр ArrayLayout кому ROW_MAJOR
setTflCOperationEntryParameters(hEnt, ...
'Key', 'RTW_OP_ADD', ...
'Priority', 100, ...
'ArrayLayout', 'ROW_MAJOR', ...
'ImplementationName', 'MyMul_ROW', ...
'ImplementationHeaderFile', 'MyMul_ROW.h', ...
'ImplementationSourceFile', 'MyMul_ROW.c');Создайте концептуальные аргументы y1, u1 и u2. Существует несколько способов настройки концептуальных аргументов. В этом примере используются вызовы getTflArgFromString и addConceptualArg для создания и добавления аргументов.
arg = RTW.TflArgMatrix('y1', 'RTW_IO_OUTPUT', 'double');
arg.DimRange = [2 2; 50 50];
hEnt.addConceptualArg(arg);
arg = RTW.TflArgMatrix('u1', 'RTW_IO_INPUT', 'double');
arg.DimRange = [2 3; 2 3];
hEnt.addConceptualArg(arg);
arg = RTW.TflArgMatrix('u2', 'RTW_IO_INPUT', 'double');
arg.DimRange = [3 4; 3 4];
hEnt.addConceptualArg(arg);
Создайте аргументы реализации. Существует несколько способов настройки аргументов реализации. В этом примере используются вызовы getTflArgFromString для создания аргументов. При определении возвращаемого аргумента функции реализации создайте void выходной аргумент. При определении аргумента функции реализации для концептуального выходного аргумента (y1), задайте выходной аргумент оператора в качестве дополнительного входного аргумента. Отметить его IOType в качестве выходного. Сделать его тип типом указателя. Методы удобства setReturn и addArgument укажите, является ли аргумент возвращаемым значением или аргументом, и добавьте аргумент к массиву аргументов реализации элемента.
% Implementation Args
arg = hEnt.getTflArgFromString('unused','void');
arg.IOType = 'RTW_IO_OUTPUT';
hEnt.Implementation.setReturn(arg);
arg = hEnt.getTflArgFromString('u1','double*');
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('u2','double*');
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('y1','double*');
arg.IOType = 'RTW_IO_OUTPUT';
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('u3','uint32',2);
arg.Type.ReadOnly = true;
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('u4','uint32',3);
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('u5','uint32',3);
hEnt.Implementation.addArgument(arg);
arg = hEnt.getTflArgFromString('u6','uint32',4);
hEnt.Implementation.addArgument(arg);
Добавление записи в таблицу замены кода с вызовом addEntry функция.
addEntry(hTable, hEnt);
Сохраните файл определения таблицы. Для присвоения имени файлу используйте имя функции определения таблицы. Затем создайте код и отчет о создании кода и просмотрите замены кода.
coder.replace | setTflCFunctionEntryParameters | setTflCOperationEntryParameters