Позвольте соответствие агностика формы

Заменяющее соответствие агностика формы кода позволяет матричным входным параметрам для определенных операций быть соответствующими на основе числа элементов в противоположность матричной форме. Например, матрица 6x1 совпадает с матрицей 2x3 в агностическом формой соответствии, потому что у обоих есть в общей сложности 6 элементов. Такие соответствия могут только быть сделаны, если вывод и входные параметры непрерывно выделяются в памяти и если заменяющая функция может быть выполнена поэлементная. Агностическое формой матричное соответствие увеличивает коэффициент воспроизводства, таким образом, это выгодно для замены, которая не требует, чтобы матричная форма была рассмотрена.

Агностические формой заменяющие записи кода могут быть созданы или с пользовательским интерфейсом Code Replacement Tool или программно.

Метод пользовательского интерфейса - заменяющий инструмент кода

Этот пример показывает, как настроить агностическую формой матричную замену для заменяющей записи таблицы сложения кода.

  1. Откройте Заменяющий Инструмент Кода. Из командной строки MATLAB® введите crtool.

  2. Составьте заменяющую таблицу кода. Перейдите к File > New Table.

  3. Создайте запись таблицы. Агностическая формой матричная замена только поддерживает записи таблицы Math Operation. Или right-click на вашей таблице или переходит к File > New Entry и выбирает Math Operation. Отображение информации появляется. Из выпадающего меню Operation выберите addition.

  4. Создайте концептуальные аргументы. Раздел Conceptual operation задает каждый из ваших концептуальных аргументов. Чтобы включить агностическую формой замену устанавливает Argument type: на matrix открывать меню Matrix entry properties.

  5. Установите параметры записи. В меню Matrix entry properties установите флажок Allow shape-agnostic match, чтобы включить агностическую формой замену.

  6. Подтвердите свою запись таблицы. Или нажмите кнопку validate entry или щелкните правой кнопкой по записи и выберите Validate entries.

  7. Нажмите save.

    Это отображение показывает настройки Code Replacement Tool для этого примера.

Программируемый метод

Этот пример показывает, как настроить агностическую формой матричную замену для заменяющей записи таблицы сложения кода.

  1. Составьте заменяющую таблицу кода. Создайте функциональное определение с именем таблицы 'ShapeAgnosticTable'. Вызовите RTW.TflTable, чтобы составить таблицу.

    function hLib = ShapeAgnosticTable
    hLib = RTW.TflTable;
    
  2. Создайте запись таблицы для замены кода. Агностическая формой замена только поддерживает записи операции, как задано с вызовом RTW.TflCOperationEntry.

    hEnt = RTW.TflCOperationEntry;
    
  3. Установите параметры записи, чтобы настроить входную обработку. Можно включить матричную замену формы-agostic путем установки параметра записи 'AllowShapeAgnosticMatch' на true.

    hEnt.setTflCOperationEntryParameters( ...
              'Key', 'RTW_OP_ADD', ...
              'Priority', 100, ...
              'AllowShapeAgnosticMatch', true, ...
              'ImplementationName', 'MyAdd_Matrix', ...
              'SideEffects', true);
  4. Создайте концептуальные аргументы. В данном примере создайте концептуальные аргументы 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);
  5. Создайте аргументы реализации. В данном примере вызовите функциональный 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);
    
  6. Добавьте эту запись в заменяющую таблицу кода с функциональным addEntry.

    hLib.addEntry( hEnt ); 
    

  7. Сохраните таблицу как ее имя функции. В данном примере ShapeAgnosticTable.

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

Смотрите также

Похожие темы