Установите заданные параметры для записи оператора в заменяющей таблице кода
setTflCOperationEntryParameters(hEntry,varargin)Этот пример показывает, как использовать функцию 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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' — Specifies для оператора, чтобы заменитьЗначение 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 записей0 (значение по умолчанию) | 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 записей1 (значение по умолчанию) | числовой скалярЗначение NetSlopeAdjustmentFactor задает наклонную часть корректировки сетевого наклона (F2E, например, 1.0) для фиксированной точки концептуальные аргументы, требуемые для заменяющего соответствия произойти для Mul/Div/MulDiv/Shift/Cast записей. Инстанцируйте записи при помощи , а не hEntry = RTW.TflCOperationEntryGenerator_NetSlope.hEntry = RTW.TflCOperationEntry
Для Добавляют/Минус записи:
Генератор кода игнорирует значение этого аргумента.
Наклонная часть поправочного коэффициента сетевого наклона концептуальных аргументов для Добавляет/Минус, что записи должны быть нулем для заменяющего соответствия, чтобы произойти.
Пример: 'NetSlopeAdjustmentFactor',1.5
'Priority' — Задает поисковый приоритет записи оператора100 (значение по умолчанию) | целочисленное значение 0.. 100Значение 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' | массив векторов символов | массив строкЗначение 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, но не должны быть оптимизированы далеко, такие как реализация 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.