exponenta event banner

Разрешить агностическое совпадение формы

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

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

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

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

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

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

  3. Создайте запись таблицы. Замена формы-агностической матрицы поддерживает только записи таблицы математических операций. Также 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.

    На этом экране показаны настройки инструмента замены кода для этого примера.

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

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

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

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

    hEnt = RTW.TflCOperationEntry;
    
  3. Задайте параметры ввода для настройки обработки ввода. Можно включить замену формы-агостической матрицы, задав параметр ввода '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
    

Пример модели

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

 /* 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' для принятия общего количества элементов в отличие от размеров матрицы. Дополнительные сведения см. в разделе Настройка процесса сопоставления и замены.

См. также

Связанные темы