Соответствие форма-агностика замещения кода позволяет согласовывать матричные входы для определенных операций на основе количества элементов в отличие от формы матрицы. Для примера, a 6x1 матрица соответствует 2x3 матрица в форме-agnostic совпадает, потому что оба имеют в общей сложности 6 элементов. Такие соответствия могут быть выполнены только в том случае, если выходные и входные параметры непрерывно выделены в памяти, и если функция замены может выполняться поэлементно. Соответствие формоагностическая матрица увеличивает скорость замены, поэтому выгодно для замены, которая не требует рассмотрения формы матрицы.
Записи замены кода Shape-agnostic могут быть созданы либо с помощью пользовательского интерфейса Code Replacement Tool, либо программно.
В этом примере показано, как настроить замену матрицы формы-agnostic для записи таблицы замещения кода сложения.
Откройте Инструмент замены кода. Из MATLAB® в командной строке введите crtool.
Составьте таблицу замещения кода. Перейти к File > New Table.
Создайте запись таблицы. Shape-agnostic замена матрицы поддерживает только Math Operation записи таблицы. Либо right-click по своей таблице или перейдите к File > New Entry и выберите Math Operation. Появится информация о отображении. Из Operation раскрывающееся меню, выберите addition.
Создайте концептуальные аргументы. The Conceptual operation раздел определяет каждый из ваших концептуальных аргументов. Чтобы включить замену формы-agnostic, установите Argument type: на matrix чтобы открыть Matrix entry properties меню.
Установите параметры входа. В Matrix entry properties выберите меню Allow shape-agnostic match флажок, чтобы включить замену формы-agnostic.
Проверьте запись таблицы. Либо кликните validate entry или щелкните правой кнопкой мыши запись и выберите Validate entries.
Нажмите save.
На этом отображении показаны настройки Code Replacement Tool для этого примера.

В этом примере показано, как настроить замену матрицы формы-agnostic для записи таблицы замещения кода сложения.
Составьте таблицу замещения кода. Создайте определение функции с именем таблицы 'ShapeAgnosticTable'. Функции RTW.TflTable для создания таблицы.
function hLib = ShapeAgnosticTable hLib = RTW.TflTable;
Создайте запись таблицы для замены кода. Shape-agnostic замена поддерживает только операция значения, как задано вызовом RTW.TflCOperationEntry.
hEnt = RTW.TflCOperationEntry;
Установите параметры входа, чтобы настроить обработку входных параметров. Можно включить shape-agostic замену матрицы путем установки параметра entry 'AllowShapeAgnosticMatch' на true.
hEnt.setTflCOperationEntryParameters( ...
'Key', 'RTW_OP_ADD', ...
'Priority', 100, ...
'AllowShapeAgnosticMatch', true, ...
'ImplementationName', 'MyAdd_Matrix', ...
'SideEffects', true);Создайте концептуальные аргументы. В данном примере создайте концептуальные аргументы y1, u1 и u2 с вызовами функции create, 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