exponenta event banner

setTflCFunctionEntryParameters

Задать заданные параметры для ввода функции в таблицу замены кода

Описание

пример

setTflCFunctionEntryParameters(hEntry,varargin) задает заданные параметры для записи функции в таблице замены кода.

Примеры

свернуть все

В этом примере показано, как использовать setTflCFunctionEntryParameters для установки указанных параметров для записи функции замены кода для sqrt.

fcn_entry = RTW.TflCFunctionEntry;
fcn_entry.setTflCFunctionEntryParameters( ...
                               'Key',                      'sqrt', ...
                               'Priority',                 100, ...
                               'ImplementationName',       'sqrt', ...
                               'ImplementationHeaderFile', '<math.h>' );

Входные аргументы

свернуть все

hEntry является дескриптором записи функции замены кода, ранее возвращенной hEntry = RTW.TflCFunctionEntry или hEntry = MyCustomFunctionEntry, где MyCustomFunctionEntry является классом, производным от RTW.TflCFunctionEntry.

Пример: fcn_entry

Пример: 'Key','sqrt'

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Key','sqrt'

AcceptExprInput значение помечает генератор кода, что функция реализации, описанная этой записью, принимает входные выражения. Значение по умолчанию: true если ImplType равняется FCN_IMPL_FUNCT и false если ImplType равняется FCN_IMPL_MACRO.

Если значение равно true, входы выражений интегрированы в сгенерированный код в форме, аналогичной этой форме:

 rtY.Out1 = mySin(rtU.In1 + rtU.In2);

Если значение равно false, создается временная переменная для ввода выражения:

real_T rtb_Sum;

rtb_Sum = rtU.In1 + rtU.In2;
rtY.Out1 = mySin(rtb_Sum);

Пример: 'AcceptExprInput',true

AdditionalHeaderFiles значение указывает дополнительные файлы заголовка для записи таблицы замены кода. Векторы могут включать в себя маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB ® или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'AdditionalHeaderFiles',{}

AdditionalIncludePaths значение указывает полный путь дополнительных путей включения для записи замены кода. Векторы символов или строковый массив могут содержать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'AdditionalIncludePaths',{}

AdditionalLinkObjs значение определяет дополнительные объекты связи для записи таблицы замены кода. Векторы символов или строковый массив могут содержать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'AdditionalLinkObjs',{}

AdditionalLinkObjsPaths значение указывает полный путь дополнительных путей объекта ссылки для записи замены кода. Векторы символов или строковый массив могут содержать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа. Значение по умолчанию: {}.

Пример: 'AdditionalLinkObjsPaths',{}

AdditionalSourceFiles значение указывает дополнительные исходные файлы для записи таблицы замены кода. Векторы символов или строковый массив могут содержать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'AdditionalSourceFiles',{}

AdditionalSourcePaths значение указывает полный путь дополнительных исходных путей для записи замены кода. Векторы символов или строковый массив могут содержать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'AdditionalSourcePaths',{}

AdditionalCompileFlags значение указывает дополнительные флаги, необходимые для компиляции исходных файлов, определенных для записи таблицы замены кода. Значение по умолчанию: {}.

Пример: 'AdditionalCompileFlags',{}

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

Пример: 'AdditionalLinkFlags',{}

ArrayLayout значение указывает порядок элементов массива в памяти, поддерживаемый реализацией замены. По умолчанию реализация замены поддерживает компоновку основных данных столбца. Для ROW-MAJOR, реализация замены поддерживает компоновку основных данных строк. Для COLUMN_AND_ROW, реализация замены поддерживает макеты данных «основной столбец» и «основная строка».

Пример: 'ArrayLayout','ROW_MAJOR'

EntryInfoAlgorithm значение определяет метод вычисления или аппроксимации, настроенный для указанной математической функции, который должен быть сопоставлен, чтобы произошла замена функции. Библиотеки замены кода поддерживают замену функций на основе метода вычисления или аппроксимации для математических функций rSqrt, sin, cos, и sincos. Допустимые аргументы для каждой поддерживаемой функции перечислены в таблице.

ФункцияАргументЗначение

rSqrt

RTW_DEFAULT

Сопоставьте метод вычисления по умолчанию, Exact

RTW_NEWTON_RAPHSON

Сопоставить Newton-Raphson метод вычисления

RTW_UNSPECIFIED

Сопоставление метода вычисления

sin

cos

sincos

RTW_CORDIC

Сопоставить CORDIC метод аппроксимации

RTW_DEFAULT

Сопоставьте метод аппроксимации по умолчанию, None

RTW_UNSPECIFIED

Сопоставление метода аппроксимации

Пример: 'EntryInfoAlgorithm','RTW_DEFAULT'

GenCallback задает обратный вызов, следующий за генерацией кода. При указании 'RTW.copyFileToBuildDir', и если эта запись функции сопоставлена и используется, генератор кода вызывает функцию RTW.copyFileToBuildDir после генерации кода. Эта функция обратного вызова копирует дополнительные файлы заголовка, источника или объекта, указанные для этой записи функции, в папку построения.

Пример: 'GenCallback',''

ImplementationHeaderFile значение указывает имя файла заголовка, который объявляет функцию реализации, например, '<math.h>'. Вектор символов или строковый скаляр может включать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'ImplementationHeaderFile',''

ImplementationHeaderPath значение указывает полный путь к файлу заголовка реализации. Вектор символов или строковый скаляр может включать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'ImplementationHeaderPath',''

ImplementationName значение указывает имя функции реализации, например, 'sqrt', которые могут совпадать или отличаться от Key имя.

Пример: 'ImplementationName',''

ImplementationSourceFile значение указывает имя исходного файла реализации. Вектор символов или строковый скаляр может включать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'ImplementationSourceFile',''

ImplementationSourcePath значение указывает полный путь к исходному файлу реализации. Вектор символов или строковый скаляр может включать маркеры. Например, в маркере $mytoken$, mytoken - переменная, определяемая как вектор символа или скаляр строки в рабочей области MATLAB или как функция MATLAB в пути поиска, которая возвращает вектор символа.

Пример: 'ImplementationSourcePath',''

Использовать FCN_IMPL_FUNCT для функции или FCN_IMPL_MACRO для макроса.

Пример: 'ImplType','FCN_IMPL_FUNCT'

Значение Key указывает имя заменяемой функции. Имя должно совпадать с именем функции, перечисленным в разделе Код, который можно заменить из кода MATLAB или Код, который можно заменить из моделей Simulink.

Пример: 'Key','sqrt'

Priority значение определяет приоритет поиска для записи функции относительно других записей с тем же именем функции и списком концептуальных аргументов в этой таблице. Наивысший приоритет равен 0, а наименьший приоритет равен 100. Если таблица предоставляет две реализации для функции, реализация с более высоким приоритетом затеняет реализацию с более низким приоритетом.

Пример: 'Priority',100

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

Пример: 'RoundingModes',{'RTW_ROUND_UNSPECIFIED'}

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

Пример: 'SaturationMode','RTW_SATURATE_UNSPECIFIED'

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

Пример: 'SideEffects',false

StoreFcnReturnInLocalVar значение помечает генератор кода, что возвращаемое значение функции реализации, описанной в этой записи, должно храниться в локальной переменной независимо от других настроек сворачивания выражения. Если значение равно false, другие параметры сворачивания выражений определяют, является ли возвращаемое значение свернутым. Сохранение возвращаемых функций в локальной переменной может повысить четкость генерируемого кода. В этом примере показан код, созданный при сворачивании выражения:

void sw_step(void)
{
    if (ssub(sadd(sw_U.In1, sw_U.In2), sw_U.In3) <= 
        smul(ssub(sw_U.In4, sw_U.In5),sw_U.In6)) {  
      sw_Y.Out1 = sw_U.In7;  
    } else {
       sw_Y.Out1 = sw_U.In8;  
    }
}

С StoreFcnReturnInLocalVar установить в значение trueсгенерированный код потенциально легче понять и отладить:

void sw_step(void)
{  
    real32_T rtb_Switch;  
    real32_T hoistedExpr;
    ......  
    rtb_Switch = sadd(sw_U.In1, sw_U.In2);
    rtb_Switch = ssub(rtb_Switch, sw_U.In3);
    hoistedExpr = ssub(sw_U.In4, sw_U.In5); 
    hoistedExpr = smul(hoistedExpr, sw_U.In6);  
    if (rtb_Switch <= hoistedExpr) {
       sw_Y.Out1 = sw_U.In7;  
    } else { 
       sw_Y.Out1 = sw_U.In8;  
    }
}

Пример: 'StoreFcnReturnInLocalVar',false

Представлен в R2007b