Заменяющее соответствие агностика формы кода позволяет матричным входным параметрам для определенных операций быть соответствующими на основе числа элементов в противоположность матричной форме. Например, матрица 6x1
совпадает с матрицей 2x3
в агностическом формой соответствии, потому что у обоих есть в общей сложности 6 элементов. Такие соответствия могут только быть сделаны, если вывод и входные параметры непрерывно выделяются в памяти и если заменяющая функция может быть выполнена поэлементная. Агностическое формой матричное соответствие увеличивает коэффициент воспроизводства, таким образом, это выгодно для замены, которая не требует, чтобы матричная форма была рассмотрена.
Агностические формой заменяющие записи кода могут быть созданы или с пользовательским интерфейсом Code Replacement Tool или программно.
Этот пример показывает, как настроить агностическую формой матричную замену для заменяющей записи таблицы сложения кода.
Откройте Заменяющий Инструмент Кода. Из командной строки MATLAB® введите crtool
.
Составьте заменяющую таблицу кода. Перейдите к File > New Table
.
Создайте запись таблицы. Агностическая формой матричная замена только поддерживает записи таблицы Math Operation. Или right-click
на вашей таблице или переходит к File > New Entry
и выбирает Math Operation. Отображение информации появляется. Из выпадающего меню Operation
выберите addition
.
Создайте концептуальные аргументы. Раздел Conceptual operation
задает каждый из ваших концептуальных аргументов. Чтобы включить агностическую формой замену устанавливает Argument type:
на matrix
открывать меню Matrix entry properties
.
Установите параметры записи. В меню Matrix entry properties
установите флажок Allow shape-agnostic match
, чтобы включить агностическую формой замену.
Подтвердите свою запись таблицы. Или нажмите кнопку validate entry
или щелкните правой кнопкой по записи и выберите Validate entries
.
Нажмите save
.
Это отображение показывает настройки Code Replacement Tool для этого примера.
Этот пример показывает, как настроить агностическую формой матричную замену для заменяющей записи таблицы сложения кода.
Составьте заменяющую таблицу кода. Создайте функциональное определение с именем таблицы 'ShapeAgnosticTable'
. Вызовите RTW.TflTable
, чтобы составить таблицу.
function hLib = ShapeAgnosticTable hLib = RTW.TflTable;
Создайте запись таблицы для замены кода. Агностическая формой замена только поддерживает записи операции, как задано с вызовом RTW.TflCOperationEntry
.
hEnt = RTW.TflCOperationEntry;
Установите параметры записи, чтобы настроить входную обработку. Можно включить матричную замену формы-agostic путем установки параметра записи 'AllowShapeAgnosticMatch'
на true
.
hEnt.setTflCOperationEntryParameters( ... 'Key', 'RTW_OP_ADD', ... 'Priority', 100, ... 'AllowShapeAgnosticMatch', true, ... 'ImplementationName', 'MyAdd_Matrix', ... 'SideEffects', true);
Создайте концептуальные аргументы. В данном примере создайте концептуальные аргументы y1, u1 и u2 с вызовами создать функции, RTW.TflArgMatrix
, и добавьте функцию, 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 = [2 3; 2 3]; hEnt.addConceptualArg(arg);
Создайте аргументы реализации. В данном примере вызовите функциональный getTflArgFromString
, чтобы создать аргументы. Задайте возвращаемый аргумент реализации как выходной аргумент void
. Задайте концептуальный выходной аргумент, y1, как указатель с IOType как output
.
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('numElements','uint32',6); hEnt.Implementation.addArgument(arg);
Добавьте эту запись в заменяющую таблицу кода с функциональным addEntry
.
hLib.addEntry( hEnt );
Сохраните таблицу как ее имя функции. В данном примере ShapeAgnosticTable
.
Подтвердите свою запись в командной строке MATLAB. Вызовите табличный файл определения со следующей командой.
hTbl = ShapeAgnosticTable
Example Model
Пример этой заменяющей записи таблицы кода продемонстрирован через следующую модель. Даже при том, что матричная форма в этой модели не совпадает с записью, операция может быть выполнена поэлементная, и запись включает агностическое формой соответствие, таким образом, замена кода наблюдается в сгенерированном коде.
/* Outport: '<Root>/Out1' incorporates: * Inport: '<Root>/In1' * Inport: '<Root>/In2' * Sum: '<Root>/Add' */ MyAdd_Matrix(Demo_U.In1, Demo_U.In2, Demo_Y.Out1, 6U);
Если вы включаете агностическое формой соответствие для операции, которая по сути не вычисляется поэлементная, регулярное соответствие выполняется.
Когда агностическое формой соответствие включено, замена кода не соблюдает установку для 'DimRange'
. Вместо этого это вычисляет число элементов и использует то значение, чтобы соответствовать.
Если вы работаете с индивидуально настраиваемыми заменяющими записями кода, настраиваете функцию 'do_match'
, чтобы принять общее количество элементов в противоположность матричным размерностям. Для получения дополнительной информации смотрите, Настраивают Процесс Соответствия и Замены.
setTflCOperationEntryParameters