Разрешить соответствие формы Agnostic

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

Записи замены кода Shape-agnostic могут быть созданы либо с помощью пользовательского интерфейса Code Replacement Tool, либо программно.

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

В этом примере показано, как настроить замену матрицы формы-agnostic для записи таблицы замещения кода сложения.

  1. Откройте Инструмент замены кода. Из MATLAB® в командной строке введите crtool.

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

  3. Создайте запись таблицы. Shape-agnostic замена матрицы поддерживает только Math Operation записи таблицы. Либо right-click по своей таблице или перейдите к File > New Entry и выберите Math Operation. Появится информация о отображении. Из Operation раскрывающееся меню, выберите addition.

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

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

  6. Проверьте запись таблицы. Либо кликните validate entry или щелкните правой кнопкой мыши запись и выберите Validate entries.

  7. Нажмите save.

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

Программный метод

В этом примере показано, как настроить замену матрицы формы-agnostic для записи таблицы замещения кода сложения.

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

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

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

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

См. также

Похожие темы