Установите заданные параметры для записи оператора в заменяющей таблице кода
В этом примере показано, как использовать setTflCOperationEntryParameters
функционируйте, чтобы установить параметры для заменяющей записи оператора кода для uint8
сложение, которое совпадает с алгоритмом броска после суммы.
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
сложение, которое совпадает с алгоритмом броска после суммы. Параметры '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
— Обработайте к заменяющей записи таблицы кодаhEntry
указатель на заменяющую запись таблицы кода, ранее возвращенную одним из инстанцирований класса в таблице.
Инстанцирование класса | Поддержка |
---|---|
| Замена оператора поддержек. |
| Обеспечивает параметры для сложения фиксированной точки и вычитания, которые не доступны в |
| Обеспечивает сетевые наклонные параметры для умножения фиксированной точки и деления, которые не доступны в |
| Замена поддержек нескалярных операторов с функциями MathWorks BLAS. |
| Замена поддержек нескалярных операторов с функциями C BLAS ANSI®/ISO®. |
(где | Замена оператора поддержек с помощью заменяющих записей таблицы пользовательского кода. |
Если вы хотите задать 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
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'
— Задает дополнительные заголовочные файлы для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalHeaderFiles
значение задает дополнительные заголовочные файлы для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочей области MATLAB® или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalHeaderFiles',{}
'AdditionalIncludePaths'
— Задает дополнительный, включают пути для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalIncludePaths
значение указывает, что полный путь дополнительных включает пути для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalIncludePaths',{}
'AdditionalLinkObjs'
— Задает дополнительные объекты ссылки для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalLinkObjs
значение задает дополнительные объекты ссылки для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalLinkObjs',{}
'AdditionalLinkObjsPaths'
— Задает дополнительные пути к объекту ссылки для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalLinkObjsPaths
значение задает полный путь дополнительных путей к объекту ссылки для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalLinkObjsPaths',{}
'AdditionalSourceFiles'
— задает дополнительные исходные файлы для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalSourceFiles
значение задает дополнительные исходные файлы для заменяющей записи таблицы кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalSourceFiles',{}
'AdditionalSourcePaths'
— Задает дополнительные исходные пути для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalSourcePaths
значение задает полный путь дополнительных исходных путей для заменяющей записи кода. Векторы символов или массив строк могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'AdditionalSourcePaths',{}
'AdditionalCompileFlags'
— Задает дополнительные флаги компилятора для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalCompileFlags
значение задает дополнительные флаги, требуемые скомпилировать исходные файлы, заданные для заменяющей записи таблицы кода.
Пример: 'AdditionalCompileFlags',{}
'AdditionalLinkFlags'
— Задает дополнительные флаги компоновщика для записи таблицы{}
(значение по умолчанию) | массив векторов символов | массив строкAdditionalLinkFlags
значение задает дополнительные флаги, требуемые соединить скомпилированные файлы для заменяющей записи таблицы кода.
Пример: 'AdditionalLinkFlags',{}
'AllowShapeAgnosticMatch'
— Включает матричные соответствия на основе общего количества элементов, а не определенной матричной формыfalse
(значение по умолчанию) | true
AllowShapeAgnosticMatch
значение включает заменяющее соответствие кода на основе общего количества элементов, а не определенной матричной формы для матриц, которые непрерывно выделяются в памяти. Для получения дополнительной информации смотрите, Позволяют Соответствие Агностика Формы.
Пример: 'AllowShapeAgnosticMatch', false
'ArrayLayout'
— Задает размещение устройства хранения данных массивов для записи таблицы'COLUMN_MAJOR'
(значение по умолчанию) | 'ROW_MAJOR'
| 'COLUMN_AND_ROW'
ArrayLayout
значение задает порядок элементов массива в памяти, поддержанной заменяющей реализацией. По умолчанию, заменяющая поддержка внедрения упорядоченный по столбцам формат данных. Для ROW-MAJOR
, заменяющая поддержка внедрения упорядоченный по строкам формат данных. Для COLUMN_AND_ROW
, заменяющая поддержка внедрения упорядоченные по столбцам и упорядоченные по строкам форматы данных.
Пример: 'ArrayLayout','ROW_MAJOR'
'EntryInfoAlgorithm'
— Задает математический алгоритм, чтобы соответствовать для записи таблицы'RTW_CAST_BEFORE_OP'
(значение по умолчанию) | 'RTW_CAST_AFTER_OP'
EntryInfoAlgorithm
значение задает алгоритм для заданной математической функции, которая должна быть соответствующей для замены оператора, чтобы произойти. Заменяющие библиотеки кода поддерживают замену на основе алгоритма для математических операций RTW_OP_ADD
и RTW_OP_MINUS
. Допустимые аргументы для поддерживаемых операций перечислены в таблице. Аргументы имеют то же значение для обеих операций.
Аргумент | Значение |
---|---|
| Прежде, чем выполнить операцию, введите входные значения броска к типу выходных данных. Если выходной тип не может точно представлять входные значения, потери могут произойти в результате броска с выходным типом. Дополнительная потеря может произойти, когда результат операции брошен к типу окончательного результата. |
| Вычислите идеальный результат операции входных параметров. Затем введите, бросает результат к типу выходных данных. Потеря происходит во время броска типа. Этот алгоритм ведет себя так же на язык C кроме тех случаев, когда со знаком из операндов не соответствует. Например, когда вы добавляете долгую операцию со знаком в длинный операнд без знака, стандартные правила языка C преобразуют длинный операнд со знаком в длинный операнд без знака. Результатом является значение, которое не идеально. |
Пример: 'EntryInfoAlgorithm','RTW_CAST_AFTER_OP'
'GenCallback'
— Задает коллбэк, который следует за генерацией кода''
(значение по умолчанию) | 'RTW.copyFileToBuildDir'
GenCallback
задает коллбэк, который следует за генерацией кода. Если вы задаете 'RTW.copyFileToBuildDir'
, и если эта запись операции является соответствующей и используется, функция вызовов генератора кода RTW.copyFileToBuildDir
после генерации кода. Эта функция обратного вызова копирует дополнительный заголовок, источник или объектные файлы, которые вы задали для этой записи в папку сборки.
Пример: 'GenCallback','RTW.copyFileToBuildDir'
'ImplementationHeaderFile'
— Задает имя заголовочного файла, который объявляет операцию реализации''
(значение по умолчанию) | вектор символов | строковый скалярImplementationHeaderFile
значение задает имя заголовочного файла, который объявляет функцию реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'ImplementationHeaderFile','s32_mul.h'
'ImplementationHeaderPath'
— Задает путь к заголовочному файлу реализации''
(значение по умолчанию) | вектор символов | строковый скалярImplementationHeaderPath
значение задает полный путь к заголовочному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'ImplementationHeaderPath', fullfile('$MATLAB_ROOT', 'crl')
'ImplementationName'
— Задает имя функции реализации''
(значение по умолчанию) | вектор символов | строковый скалярImplementationName
значение задает имя функции реализации, которая может соответствовать или отличаться от Key
имя.
Пример: 'ImplementationName','s32_mul_s32_s32_sat'
'ImplementationSourceFile'
— задает имя исходного файла реализации''
(значение по умолчанию) | вектор символов | строковый скалярImplementationSourceFile
значение задает имя исходного файла реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'ImplementationSourceFile','s32_mul.c'
'ImplementationSourcePath'
— Задает путь к исходному файлу реализации''
(значение по умолчанию) | вектор символов | строковый скалярImplementationSourcePath
значение задает полный путь к исходному файлу реализации. Вектор символов или строковый скаляр могут включать лексемы. Например, в маркерном $mytoken$
, mytoken
переменная, заданная как вектор символов или строковый скаляр в рабочем пространстве MATLAB или как функция MATLAB на пути поиска файлов, который возвращает вектор символов.
Пример: 'ImplementationSourcePath', fullfile('$MATLAB_ROOT', 'crl')
'ImplType'
— Задает, является ли запись таблицы для функции реализации или макроса'FCN_IMPL_FUNCT'
(значение по умолчанию) | 'FCN_IMPL_MACRO'
ImplType
значение задает тип записи таблицы. Используйте FCN_IMPL_FUNCT
для функции или FCN_IMPL_MACRO
для макроса.
Пример: 'ImplType','FCN_IMPL_FUNCT'
'Key'
— Задает ключ для оператора, чтобы заменитьKey
значение задает ключ для оператора, чтобы заменить. Ключ должен совпадать с ключом оператора, перечисленным в Коде, который Можно Заменить из кода MATLAB или Кода, который Можно Заменить Из Моделей Simulink.
Пример: 'Key','RTW_OP_ADD'
'MustHaveZeroNetBias'
— Указывает, что сетевое требование смещения для концептуальных аргументов Добавляет/Минус записиfalse
(значение по умолчанию) | true
MustHaveZeroNetBias
значение задает, требует ли заменяющее соответствие, чтобы сетевое смещение для концептуальных аргументов Добавило/Минус, что записи являются нулем. Для Добавления/Минус входных параметров оператора неподвижной точки и выхода этот параметр должен быть установлен на true
. Инстанцируйте записи при помощи
вместо hEntry
= RTW.TflCOperationEntryGenerator
. hEntry
= RTW.TflCOperationEntry
Для Mul/Div/MulDiv/Shift/Cast записей:
Генератор кода игнорирует значение этого аргумента.
Смещение концептуальных аргументов для Mul/Div/MulDiv/Shift/Cast записей должно быть нулем для заменяющего соответствия, чтобы произойти.
Пример: 'MustHaveZeroNetBias',true
'NetFixedExponent'
— Задает зафиксированную часть экспоненты сетевого наклона для фиксированной точки концептуальные аргументы Mul/Div/MulDiv/Shift/Cast записей
(значение по умолчанию) | numeric scalar
NetSlopeAdjustmentFactor
значение задает фиксированную экспоненту (E) часть сетевого наклона (F2E, например,-3.0) для фиксированной точки концептуальные аргументы, требуемые для заменяющего соответствия произойти для Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи
вместо hEntry
= RTW.TflCOperationEntryGenerator_NetSlope
.hEntry
= RTW.TflCOperationEntry
Для Добавляют/Минус записи:
Генератор кода игнорирует значение этого аргумента.
Наклонная часть поправочного коэффициента сетевого наклона концептуальных аргументов для Добавляет/Минус, что записи должны быть нулем для заменяющего соответствия, чтобы произойти.
Пример: 'NetFixedExponent', -3.0
'NetSlopeAdjustmentFactor'
— Задает наклонную часть корректировки сетевого наклонного требования для фиксированной точки концептуальные аргументы Mul/Div/MulDiv/Shift/Cast записей
(значение по умолчанию) | числовой скалярNetSlopeAdjustmentFactor
значение задает наклонную часть корректировки сетевого наклона (F2E, например, 1.0) для фиксированной точки концептуальные аргументы, требуемые для заменяющего соответствия произойти для Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи
вместо hEntry
= RTW.TflCOperationEntryGenerator_NetSlope
.hEntry
= RTW.TflCOperationEntry
Для Добавляют/Минус записи:
Генератор кода игнорирует значение этого аргумента.
Наклонная часть поправочного коэффициента сетевого наклона концептуальных аргументов для Добавляет/Минус, что записи должны быть нулем для заменяющего соответствия, чтобы произойти.
Пример: 'NetSlopeAdjustmentFactor',1.5
'Priority'
— Задает поисковый приоритет записи оператора
(значение по умолчанию) | целочисленное значение 0.. 100Priority
значение задает поисковый приоритет записи операции относительно других записей того же имени операции и концептуального списка аргументов в рамках этой таблицы. Самый высокий приоритет 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'
| массив векторов символов | массив строкRoundingModes
значение задает один или несколько округляющихся режимов, поддержанных функцией реализации.
Пример: 'RoundingModes',{'RTW_ROUND_UNSPECIFIED'}
'SaturationMode'
— задает режим насыщения, поддержанный функцией реализации'RTW_SATURATE_UNSPECIFIED'
(значение по умолчанию) | 'RTW_SATURATE_ON_OVERFLOW'
| 'RTW_WRAP_ON_OVERFLOW'
| вектор символов | строковый скалярSaturationMode
значение задает режим насыщения, поддержанный функцией реализации.
Пример: 'SaturationMode','RTW_SATURATE_UNSPECIFIED'
'SideEffects'
— Задает, попытаться ли оптимизировать далеко функцию реализацииfalse
(значение по умолчанию) | true
SideEffects
значение отмечает генератор кода, чтобы не оптимизировать далеко функцию реализации, описанную этой записью. Этот параметр применяется к функциям реализации, которые возвращают void
но не должны быть оптимизированы далеко, такие как a memcpy
реализация или функция реализации та глобальная память доступов значения. Для тех реализация функционирует только, необходимо включать этот параметр и задать значение true
.
Пример: 'SideEffects',false
'SlopesMustBeTheSame'
— Задает наклонное требование для концептуальных аргументов Mul/Div/MulDiv/Shift/Cast записейfalse
(значение по умолчанию) | true
SlopesMustBeTheSame
значение задает, требует ли заменяющее соответствие, чтобы наклон был тем же самым для концептуальных аргументов Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи
вместо hEntry
= RTW.TflCOperationEntryGenerator
.hEntry
= RTW.TflCOperationEntry
Для Добавляют/Минус записи:
Генератор кода игнорирует значение этого аргумента.
Этот параметр должен быть установлен на true
. Когда установлено в true
, наклоны концептуальных аргументов равны для заменяющего соответствия, чтобы произойти.
Пример: 'SlopesMustBeTheSame',true
'StoreFcnReturnInLocalVar'
— Задает, сохранить ли функцию реализации невнимательные настройки сворачивания выраженияfalse
(значение по умолчанию) | true
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.