Установите указанные параметры для ввода оператора в таблицу замещения кода
В этом примере показано, как использовать setTflCOperationEntryParameters
функция для установки параметров для записи оператора замены кода для uint8
сложение, которое соответствует алгоритму cast-after-sum.
op_entry = RTW.TflCOperationEntry; op_entry.setTflCOperationEntryParameters( ... 'Key', 'RTW_OP_ADD', ... 'EntryInfoAlgorithm', 'RTW_CAST_AFTER_OP', ... 'Priority', 90, ... 'SaturationMode', 'RTW_SATURATE_UNSPECIFIED', ... 'RoundingModes', {'RTW_ROUND_UNSPECIFIED'}, ... 'ImplementationName', 'u8_add_u8_u8', ... 'ImplementationHeaderFile', 'u8_add_u8_u8.h', ... 'ImplementationSourceFile', 'u8_add_u8_u8.c');
В этом примере показано, как использовать setTflCOperationEntryParameters
функция для установки параметров для записи оператора замены кода для int16
с фиксированной точкой деление. Запись в таблице задает сетевое масштабирование между входами оператора и выходом, чтобы сопоставить область значений значений наклона и смещения с операцией замены.
op_entry = RTW.TflCOperationEntryGenerator_NetSlope; op_entry.setTflCOperationEntryParameters( ... 'Key', 'RTW_OP_DIV', ... 'Priority', 90, ... 'SaturationMode', 'RTW_WRAP_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_CEILING'}, ... 'NetSlopeAdjustmentFactor', 1.0, ... 'NetFixedExponent', 0.0, ... 'ImplementationName', 's16_div_s16_s16', ... 'ImplementationHeaderFile', 's16_div_s16_s16.h', ... 'ImplementationSourceFile', 's16_div_s16_s16.c' );
В этом примере показано, как использовать setTflCOperationEntryParameters
функция для установки параметров для записи оператора замены кода для uint16
с фиксированной точкой сложение, которое соответствует алгоритму cast-after-sum. Параметры 'SlopesMustBeTheSame' и 'MustHaveZeroNetBias' должны быть установлены в
true
для задания равного наклона и нулевого смещения сети между входами оператора и выходом. Это сопоставляет относительные значения уклона и смещения (а не определенную комбинацию уклона и смещения) с операцией замены.
op_entry = RTW.TflCOperationEntryGenerator; op_entry.setTflCOperationEntryParameters( ... 'Key', 'RTW_OP_ADD', ... 'EntryInfoAlgorithm', 'RTW_CAST_AFTER_OP', ... 'Priority', 90, ... 'SaturationMode', 'RTW_WRAP_ON_OVERFLOW', ... 'RoundingModes', {'RTW_ROUND_UNSPECIFIED'}, ... 'SlopesMustBeTheSame', true, ... 'MustHaveZeroNetBias', true, ... 'ImplementationName', 'u16_add_SameSlopeZeroBias', ... 'ImplementationHeaderFile', 'u16_add_SameSlopeZeroBias.h', ... 'ImplementationSourceFile', 'u16_add_SameSlopeZeroBias.c');
hEntry
- Указатель на запись таблицы замещения кодаThe hEntry
- указатель на запись таблицы замещения кода, ранее возвращенный одним из экземпляров классов в таблице.
Экземпляр класса | Поддержка |
---|---|
| Поддерживает замену оператора. |
| Предоставляет параметры для сложения и вычитания с фиксированной точкой, которые недоступны в |
| Предоставляет параметры сетевого наклона для умножения с фиксированной точкой и деления, которые недоступны в |
| Поддерживает замену нескалярных операторов функциями MathWorks BLAS. |
| Поддерживает замену нескалярных операторов на ANSI®/ ISO® Функции BLAS на C. |
(где | Поддерживает замену оператора с помощью пользовательских записей таблицы замещения кода. |
Если вы хотите задать SlopesMustBeTheSame
или MustHaveZeroNetBias
для записи оператора создайте экземпляр записи таблицы с помощью
а не hEntry
= RTW.TflCOperationEntryGenerator
. Если вы хотите использовать hEntry
= RTW.TflCOperationEntryNetSlopeAdjustmentFactor
и NetFixedExponent
, создайте экземпляр записи таблицы при помощи
.hEntry
= RTW.TflCOperationEntryGenerator_NetSlope
Пример: op_entry
varargin
- Пар имя-значение аргументов для ввода операцииПример: 'Key','RTW_OP_ADD'
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Key','RTW_OP_ADD'
'AcceptExprInput'
- Определяет, принимает ли операция реализации входы выраженияtrue
| false
The AcceptExprInput
значение помечает генератор кода, что функция реализации, описанная этой записью, принимает входы выражения. Значение по умолчанию true
если ImplType
равен FCN_IMPL_FUNCT
и false
если ImplType
равен FCN_IMPL_MACRO
.
Если значение true
, входы выражения интегрируются в сгенерированный код в форме, подобной этой форме:
rtY.Out1 = myAdd(rtU.In1, rtU.In2 * rtU.In3);
Если значение false
временная переменная генерируется для входного выражения:
real_T temp; temp = rtU.In2 * rtU.In3; rtY.Out1 = myAdd(rtU.In1, temp);
Пример: 'AcceptExprInput',true
'AdditionalHeaderFiles'
- Задает дополнительные файлы заголовков для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalHeaderFiles
значение задает дополнительные файлы заголовков для записи таблицы замещения кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в MATLAB® рабочая область или как функция MATLAB в пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalHeaderFiles',{}
'AdditionalIncludePaths'
- Задает дополнительные пути включения для записи таблицы{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalIncludePaths
значение задает полный путь к дополнительным путям включения для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalIncludePaths',{}
'AdditionalLinkObjs'
- Задает дополнительные объекты ссылки для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkObjs
значение задает дополнительные объекты ссылки для записи таблицы замещения кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalLinkObjs',{}
'AdditionalLinkObjsPaths'
- Задает дополнительные пути к объектам ссылки для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkObjsPaths
значение задает полный путь к дополнительным ссылкам объекта путям для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalLinkObjsPaths',{}
'AdditionalSourceFiles'
- задает дополнительные исходные файлы для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalSourceFiles
значение задает дополнительные исходные файлы для записи таблицы замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalSourceFiles',{}
'AdditionalSourcePaths'
- Задает дополнительные исходные пути для записи таблицы{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalSourcePaths
значение задает полный путь к дополнительным исходным путям для записи замены кода. Векторы символов или строковые массивы могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'AdditionalSourcePaths',{}
'AdditionalCompileFlags'
- Задает дополнительные флаги компилятора для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalCompileFlags
значение задает дополнительные флаги, необходимые для компиляции исходных файлов, определенных для записи таблицы замещения кода.
Пример: 'AdditionalCompileFlags',{}
'AdditionalLinkFlags'
- Задает дополнительные флаги линкера для записи в таблицу{}
(по умолчанию) | массив векторов символов | строковые массивыThe AdditionalLinkFlags
значение задает дополнительные флаги, необходимые для связи скомпилированных файлов с записью таблицы замещения кода.
Пример: 'AdditionalLinkFlags',{}
'AllowShapeAgnosticMatch'
- Включает соответствие матрицы на основе общего количества элементов, а не конкретной формы матрицыfalse
(по умолчанию) | true
The AllowShapeAgnosticMatch
значение позволяет выполнять замену кода, основанную на общем количестве элементов, а не на определенной матричной форме для матриц, которые непрерывно выделяются в памяти. Для получения дополнительной информации смотрите Разрешить Agnostic фигуры.
Пример: 'AllowShapeAgnosticMatch', false
'ArrayLayout'
- Задает размещение хранилища массивов для записи в таблицу'COLUMN_MAJOR'
(по умолчанию) | 'ROW_MAJOR'
| 'COLUMN_AND_ROW'
The ArrayLayout
значение задает порядок элементов массива в памяти, поддерживаемый реализацией замены. По умолчанию реализация замены поддерживает размещение данных основного столбца. Для ROW-MAJOR
, реализация замены поддерживает размещение данных основной строки. Для COLUMN_AND_ROW
, реализация замены поддерживает размещения данных основной и основной строк.
Пример: 'ArrayLayout','ROW_MAJOR'
'EntryInfoAlgorithm'
- Задает математический алгоритм, соответствующий записи в таблице'RTW_CAST_BEFORE_OP'
(по умолчанию) | 'RTW_CAST_AFTER_OP'
The EntryInfoAlgorithm
значение задает алгоритм для указанной математической функции, которая должна совпадать для замены оператора. Библиотеки замены кода поддерживают замену на основе алгоритма для математических операций RTW_OP_ADD
и RTW_OP_MINUS
. Допустимые аргументы для поддерживаемых операций перечислены в таблице. Аргументы имеют одинаковый смысл для обеих операций.
Аргумент | Значение |
---|---|
| Перед выполнением операции введите вход значений к типу выходных данных. Если тип выхода не может точно представлять входные значения, потери могут произойти в результате приведения к типу выхода. Дополнительные потери могут произойти, когда результат операции будет приведен к конечному типу выхода. |
| Вычислите идеальный результат операции входов. Затем введите приведение результата к типу выходных данных. Потеря происходит во время приведения типа. Этот алгоритм ведет себя аналогично языку C, за исключением тех случаев, когда сигнальность операндов не совпадает. Для примера, когда вы добавляете подписанную длинную операцию к неподписанному длинному операнду, стандартные правила языка C преобразуют подписанную длинную операнд в неподписанную длинную операнд. Результатом является значение, которое не идеально. |
Пример: 'EntryInfoAlgorithm','RTW_CAST_AFTER_OP'
'GenCallback'
- Задает коллбэк, который следует за генерацией кода''
(по умолчанию) | 'RTW.copyFileToBuildDir'
The GenCallback
задает коллбэк, который следует за генерацией кода. Если вы задаете 'RTW.copyFileToBuildDir'
и если эта операция запись совпадает и используется, генератор кода вызовов функционировать RTW.copyFileToBuildDir
после генерации кода. Эта функция обратного вызова копирует дополнительные файлы заголовка, источника или объекта, которые вы указали для этой записи, в папку сборки.
Пример: 'GenCallback','RTW.copyFileToBuildDir'
'ImplementationHeaderFile'
- Задает имя файла заголовка, который объявляет операцию реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationHeaderFile
значение задает имя файла заголовка, который объявляет функцию реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationHeaderFile','s32_mul.h'
'ImplementationHeaderPath'
- Задает путь к файлу заголовка реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationHeaderPath
значение задает полный путь к файлу заголовка реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationHeaderPath', fullfile('$MATLAB_ROOT', 'crl')
'ImplementationName'
- Задает имя функции реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationName
значение задает имя функции реализации, которое может совпадать или отличаться от Key
имя.
Пример: 'ImplementationName','s32_mul_s32_s32_sat'
'ImplementationSourceFile'
- задает имя исходного файла реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationSourceFile
значение задает имя исходного файла реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationSourceFile','s32_mul.c'
'ImplementationSourcePath'
- Задает путь к исходному файлу реализации''
(по умолчанию) | символьный вектор | строковый скалярThe ImplementationSourcePath
значение задает полный путь к исходному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Для примера в лексему $mytoken$
, mytoken
- переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB в путь поиска файлов, которая возвращает вектор символов.
Пример: 'ImplementationSourcePath', fullfile('$MATLAB_ROOT', 'crl')
'ImplType'
- Определяет, является ли запись таблицы для функции реализации или макроса'FCN_IMPL_FUNCT'
(по умолчанию) | 'FCN_IMPL_MACRO'
The ImplType
значение задает тип записи таблицы. Использование FCN_IMPL_FUNCT
для функции или FCN_IMPL_MACRO
для макроса.
Пример: 'ImplType','FCN_IMPL_FUNCT'
'Key'
- Задает ключ для замены оператораThe Key
значение задает ключ для замены оператора. Ключ должен совпадать с ключом оператора, перечисленным в Коде, который вы можете заменить из Кода MATLAB или Кода, который вы можете заменить из моделей Simulink.
Пример: 'Key','RTW_OP_ADD'
'MustHaveZeroNetBias'
- Задает требования к смещению для концептуальных аргументов записей Add/Minusfalse
(по умолчанию) | true
The MustHaveZeroNetBias
значение определяет, требует ли соответствие замещения, чтобы смещение сети для концептуальных аргументов записей Add/Minus было нулем. Для параметра Add/Minus входов оператора с фиксированной точкой и выхода этого параметра необходимо задать значение true
. Создайте экземпляр записи при помощи
а не hEntry
= RTW.TflCOperationEntryGenerator
. hEntry
= RTW.TflCOperationEntry
Для записей Mul/Div/MulDiv/Shift/Cast:
Генератор кода игнорирует значение этого аргумента.
Смещение концептуальных аргументов для записей Mul/Div/MulDiv/Shift/Cast должно быть нулем, чтобы произошло соответствие замены.
Пример: 'MustHaveZeroNetBias',true
'NetFixedExponent'
- Задает фиксированную экспонентную часть наклона сети для концептуальных аргументов с фиксированной точкой записей Mul/Div/MulDiv/Shift/Cast0
(по умолчанию) | numeric scalar
The NetSlopeAdjustmentFactor
значение задает фиксированную часть (E) откоса сети (F2E, для примера, -3.0) для концептуальных аргументов с фиксированной точкой, необходимых для соответствия замены для записей Mul/Div/MulDiv/Shift/Cast. Создайте экземпляр записи при помощи
а не hEntry
= RTW.TflCOperationEntryGenerator_NetSlope
.hEntry
= RTW.TflCOperationEntry
Для записей Add/Minus:
Генератор кода игнорирует значение этого аргумента.
Часть коэффициента корректировки уклона сети концептуальных аргументов для записей Add/Minus должна быть нулем, чтобы произошло совпадение замены.
Пример: 'NetFixedExponent', -3.0
'NetSlopeAdjustmentFactor'
- Задает часть корректировки уклона сетки требования к уклону для концептуальных аргументов с фиксированной точкой для записей Mul/Div/MulDiv/Shift/Cast1
(по умолчанию) | числовой скалярThe NetSlopeAdjustmentFactor
значение задает часть изменения уклона сетки наклона (F2E, для примера, 1.0) для концептуальных аргументов с фиксированной точкой, необходимых для соответствия замены для записей Mul/Div/MulDiv/Shift/Cast. Создайте экземпляр записи при помощи
а не hEntry
= RTW.TflCOperationEntryGenerator_NetSlope
.hEntry
= RTW.TflCOperationEntry
Для записей Add/Minus:
Генератор кода игнорирует значение этого аргумента.
Часть коэффициента корректировки уклона сети концептуальных аргументов для записей Add/Minus должна быть нулем, чтобы произошло совпадение замены.
Пример: 'NetSlopeAdjustmentFactor',1.5
'Priority'
- Задает приоритет поиска входа оператора100
(по умолчанию) | целое число 0.. 100The Priority
значение задает приоритет поиска записи операции относительно других записей с таким же именем операции и списком концептуальных аргументов в этой таблице. Самый высокий приоритет - 0, а самый низкий - 100. Если таблица предоставляет две реализации для операции, реализация с более высоким приоритетом затеняет ту, которая имеет более низкий приоритет.
Пример: 'Priority',100
'RoundingModes'
- Задает режимы округления, поддерживаемые функцией реализации'RTW_ROUND_UNSPECIFIED'
(по умолчанию) | 'RTW_ROUND_FLOOR'
| 'RTW_ROUND_CEILING'
| 'RTW_ROUND_ZERO'
| 'RTW_ROUND_NEAREST'
| 'RTW_ROUND_NEAREST_ML'
| 'RTW_ROUND_CONV'
| 'RTW_ROUND_SIMPLEST'
| массив векторов символов | строковые массивыThe RoundingModes
значение задает один или несколько режимов округления, поддерживаемых функцией реализации.
Пример: 'RoundingModes',{'RTW_ROUND_UNSPECIFIED'}
'SaturationMode'
- задает режим насыщения, поддерживаемый функцией реализации'RTW_SATURATE_UNSPECIFIED'
(по умолчанию) | 'RTW_SATURATE_ON_OVERFLOW'
| 'RTW_WRAP_ON_OVERFLOW'
| вектор символов | строковый скалярThe SaturationMode
значение задает режим насыщения, поддерживаемый функцией реализации.
Пример: 'SaturationMode','RTW_SATURATE_UNSPECIFIED'
'SideEffects'
- Определяет, пытаться ли оптимизировать функцию реализацииfalse
(по умолчанию) | true
The SideEffects
значение помечает генератор кода не для того, чтобы оптимизировать функцию реализации, описанную этой записью. Этот параметр применяется к функциям реализации, которые возвращают void
но не должны быть оптимизированы, например, memcpy
реализация или функция реализации, которая обращается к значениям глобальной памяти. Для этих функций реализации необходимо включить этот параметр и задать значение true
.
Пример: 'SideEffects',false
'SlopesMustBeTheSame'
- Задает требование наклона для концептуальных аргументов записей Mul/Div/MulDiv/Shift/Castfalse
(по умолчанию) | true
The SlopesMustBeTheSame
значение определяет, требует ли соответствие замещения того же наклона для концептуальных аргументов записей Mul/Div/MulDiv/Shift/Cast. Создайте экземпляр записи при помощи
а не hEntry
= RTW.TflCOperationEntryGenerator
.hEntry
= RTW.TflCOperationEntry
Для записей Add/Minus:
Генератор кода игнорирует значение этого аргумента.
Этот параметр должен быть установлен в true
. Когда установлено значение true
, наклоны концептуальных аргументов равны для соответствия замены.
Пример: 'SlopesMustBeTheSame',true
'StoreFcnReturnInLocalVar'
- Определяет, хранить ли функцию реализации независимо от настроек складывания выраженийfalse
(по умолчанию) | true
The 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
addAdditionalHeaderFile
| addAdditionalIncludePath
| addAdditionalLinkObj
| addAdditionalLinkObjPath
| addAdditionalSourceFile
| addAdditionalSourcepath
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.