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

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

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

Похожие темы