Заменяющее соответствие агностика формы кода позволяет матричным входным параметрам для определенных операций быть соответствующими на основе числа элементов в противоположность матричной форме. Например, 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