Код можно заменить из моделей Simulink

Код, что замены генератора кода зависят от заменяющей библиотеки кода (CRL), которую вы используете. По умолчанию генератор кода не применяет заменяющую библиотеку кода. Ваш выбор библиотек зависит от лицензирования продукта и есть ли у вас доступ к пользовательским библиотекам.

Для получения информации о том, как исследовать функции и операторы, которые поддерживает заменяющая библиотека кода, смотрите, Выбирают лицензию Code Replacement Library и хотят разработать заменяющую библиотеку пользовательского кода, видеть Заменяющую Индивидуальную настройку Кода.

Математические функции – поддержка Simulink

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

ФункцияПоддержка типов данныхСкаляр, вектор, матричная поддержкаДействительная, комплексная поддержка
abs1Целое число
Плавающая точка
Фиксированная точка
Скаляр
Вектор
Матрица
Действительный
acosПлавающая точкаСкалярДействительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
acosd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acoshПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
acot2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acotd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acoth2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acsc2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acscd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acsch2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asec2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asecd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asech2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asinПлавающая точкаСкалярДействительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
asind2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asinhПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
atanПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
atan2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
atan2d2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
atand2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
atanhПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
ceilС плавающей точкой
Скаляр
С плавающей точкой
Скаляр
С плавающей точкой
Скаляр
cos3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
cosd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
coshПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
cot2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
cotd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
coth2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
csc2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
cscd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
csch2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
exactrSqrtЦелое число
Плавающая точка
СкалярДействительный
expПлавающая точкаСкаляр
Вектор
Матрица
Действительный
fixПлавающая точкаСкалярДействительный
floorС плавающей точкой
Скаляр
С плавающей точкой
Скаляр
С плавающей точкой
Скаляр
fmod4Плавающая точкаСкалярДействительный
frexpПлавающая точкаСкалярДействительный
hypotПлавающая точкаСкаляр
Вектор
Матрица
Действительный
ldexpПлавающая точкаСкалярДействительный
lnПлавающая точкаСкалярДействительный
logПлавающая точкаСкаляр
Вектор
Матрица
Действительный
log10Плавающая точкаСкаляр
Вектор
Матрица
Действительный
log22Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
maxЦелое число
Плавающая точка
Фиксированная точка
СкалярДействительный
minЦелое число
Плавающая точка
Фиксированная точка
СкалярДействительный
modЦелое число
Плавающая точка
Скаляр
Вектор
Матрица
Действительный
powПлавающая точкаСкаляр
Вектор
Матрица
Действительный
remПлавающая точкаСкаляр
Вектор
Матрица
Действительный
roundПлавающая точкаСкалярДействительный
rSqrtЦелое число
Плавающая точка
Скаляр
Вектор
Матрица
Действительный
saturateЦелое число
Плавающая точка
Фиксированная точка
Скаляр
Вектор
Матрица
Действительный
sec2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
secd2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
sech2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
signЦелое число
Плавающая точка
Фиксированная точка
Скаляр
Вектор
Матрица
Действительный
signPowПлавающая точкаСкаляр
Вектор
Матрица
Действительный
sin3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
sincos3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
sind2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
sinhПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
sqrtЦелое число
Плавающая точка
Фиксированная точка
Скаляр
Вектор
Матрица
Действительный
tanПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
tand2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
tanhПлавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплексный вход/комплексный выход
Действительный вход/комплексный выход

1 Переносятся на целочисленном переполнении только. Очистите параметры блоков Saturate on integer overflow.

2 Только, когда используется с блоком MATLAB function.

3 Поддержки метод приближения CORDIC.

Поддержка 4 Stateflow® только.

Математические функции – поддержка Stateflow

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

ФункцияПоддержка типов данныхСкаляр, вектор, матричная поддержкаДействительная, комплексная поддержка
abs1Целое число
Плавающая точка
СкалярДействительный
acos2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
acosd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acot3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acotd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acoth3,5Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acsc3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acscd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
acsch3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asec3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asecd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asech3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
asin2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
asind3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
atan2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
atan22Плавающая точкаСкаляр
Вектор
Матрица
Действительный
atan2d3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
atand3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
ceilС плавающей точкой
Скаляр
С плавающей точкой
Скаляр
С плавающей точкой
Скаляр
cos3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
cosd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
cosh2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
cot3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
cotd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
coth3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
csc3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
cscd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
csch3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
expПлавающая точкаСкалярДействительный
floorС плавающей точкой
Скаляр
С плавающей точкой
Скаляр
С плавающей точкой
Скаляр
fmodПлавающая точкаСкалярДействительный
hypot3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
ldexpПлавающая точкаСкалярДействительный
log2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
log102Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
log23Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
maxЦелое число
Плавающая точка
СкалярДействительный
minЦелое число
Плавающая точка
СкалярДействительный
powПлавающая точкаСкалярДействительный
sec3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
secd3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
sech3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
sin2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
sind3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
sinh2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
sqrtПлавающая точкаСкалярДействительный
tan2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход
tand3Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
tanh2Плавающая точкаСкаляр
Вектор
Матрица
Действительный
Комплекс
Комплексный вход/комплексный выход
Действительный вход/комплексный выход

1 Переносятся на целочисленном переполнении только.


2 модели For включающие векторы или матрицы, генератор кода заменяет только функции, закодированные на языке действия MATLAB®.

3 генератор кода заменяет только функции, закодированные на языке действия MATLAB.

Функции памяти

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

ФункцияПоддержка типов данныхСкаляр, вектор, матричная поддержкаДействительная, комплексная поддержка
memcmpПустой указатель (void*)Скаляр
Вектор
Матрица
Действительный
Комплекс
memcpyПустой указатель (void*)Скаляр
Вектор
Матрица
Действительный
Комплекс
memsetПустой указатель (void*)Скаляр
Вектор
Матрица
Действительный
Комплекс
memset2zeroПустой указатель (void*)Скаляр
Вектор
Матрица
Действительный
Комплекс

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

Неличные функции

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

ФункцияПоддержка типов данныхСкаляр, вектор, матричная поддержкаДействительная, комплексная поддержка
getInfПлавающая точкаСкалярДействительный
getMinusInfПлавающая точкаСкалярДействительный
getNaNПлавающая точкаСкалярДействительный
rtIsInfПлавающая точкаСкалярДействительный
Комплекс
rtIsNaNПлавающая точкаСкалярДействительный
Комплекс

Взаимное исключение и семафорные функции

Взаимное исключение и семафор функционируют доступ к управлению к ресурсам, совместно использованным несколькими процессами в многожильных целевых окружениях. MathWorks® обеспечивает заменяющие библиотеки кода, которые поддерживают взаимное исключение и семафорную замену для Rate Transition и блоков Task Transition на Windows®, Linux®, Mac и платформах VxWorks®.

Сгенерированное взаимное исключение и семафорный код обычно состоят из:

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

  • В коде шага модели:

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

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

  • В коде завершения модели дополнительное уничтожает вызов функции явным образом удалить взаимное исключение или семафор.

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

ФункцияКлюч
Взаимное исключение уничтожаетRTW_MUTEX_DESTROY
Взаимное исключение InitRTW_MUTEX_INIT
Взаимоисключающая блокировкаRTW_MUTEX_LOCK
Взаимное исключение разблокировалоRTW_MUTEX_UNLOCK
Семафор уничтожаетRTW_SEM_DESTROY
Семафорный InitRTW_SEM_INIT
Семафорное сообщениеRTW_SEM_POST
Семафорное ожиданиеRTW_SEM_WAIT

Операторы

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

Смешанная поддержка типов данных указывает, что можно задать различные типы данных для различных входных параметров.

ОператорКлючПоддержка типов данныхСкаляр, вектор, матричная поддержкаДействительная, комплексная поддержка
Сложение (+)1RTW_OP_ADDЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Вычитание (-)1RTW_OP_MINUSЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Умножение (*)2RTW_OP_MULЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Деление (/)RTW_OP_DIVЦелое число
Плавающая точка
Фиксированная точка
Смешанный
СкалярДействительный
Комплекс
Преобразование типа данных (брошено)RTW_OP_CASTЦелое число
Плавание point3
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Сдвиг оставлен (<<)RTW_OP_SLЦелое число
Фиксированная точка
Смешанный
Скаляр
Вектор
Matrix4
Действительный
Переключите правильную арифметику (>>)5RTW_OP_SRA
Целое число
Фиксированная точка
Смешанный
Скаляр
Вектор
Matrix4
Действительный
Логическое право сдвига (>>)RTW_OP_SRL Целое число
Фиксированная точка
Смешанный
Скаляр
Вектор
Matrix4
Действительный
Поэлементное умножение матриц (.*)6RTW_OP_ELEM_MULЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Матричное правое деление (/)RTW_OP_RDIVЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Матричное левое деление (\)RTW_OP_LDIVЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Матричная инверсия (inv)RTW_OP_INVЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Комплексное спряжениеRTW_OP_CONJUGATEЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Перемещение (.')RTW_OP_TRANSЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Эрмитово (комплексно-сопряженное) перемещение (')RTW_OP_HERMITIANЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Умножение с transposition2RTW_OP_TRMULЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Умножение с Эрмитовым transposition2RTW_OP_HMMULЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Вектор
Матрица
Действительный
Комплекс
Умножение сопровождается арифметикой права сдвига (u1*u2>>u3)7RTW_OP_MUL_SRAЦелое число
Фиксированная точка
СкалярДействительный
Умножение сопровождается делением (u1*u2/u3)8RTW_OP_MULDIVЦелое число
Фиксированная точка
СкалярДействительный
Больше, чем (>)RTW_OP_GREATER_
ЧЕМ
Целое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Больше, чем или равный (>=)RTW_OP_GREATER_
THAN_OR_EQUAL
Целое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Меньше, чем (<)RTW_OP_LESS_THANЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Меньше чем или равный (<=)RTW_OP_LESS_THAN_
OR_EQUAL
Целое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Равный (==)RTW_OP_EQUALЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс
Не равный (!=)RTW_OP_NOT_EQUALЦелое число
Плавающая точка
Фиксированная точка
Смешанный
Скаляр
Вектор
Матрица
Действительный
Комплекс

1 Смотрите Замену Оператора сложения и Оператора вычитания Кода для получения дополнительной информации чтобы рассмотреть при определении отображений для замен сложения и вычитания кода.

2 Может сопоставить с функциями умножения базовых подпрограмм линейной алгебры (BLAS).

3 Масштабированных плавающих точки не поддержаны.

4 замены Оператора сдвига с матричными данными поддерживаются для значений сдвига, которые вы задаете с входным портом. Замена не поддержана для значений сдвига, которые вы задаете в диалоговом окне параметров блоков.

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

6 Использования умножение (*) оператор (RTW_OP_MUL) для скалярного умножения.

7 Требует скаляра, действительного, или типы данных с фиксированной точкой с нулевым смещением; выведите тип операции умножения, чтобы разместить все возможные выходные значения; операнд сдвига является беззнаковым целым; и сетевой наклон равен 1 (U1_slope * U2_slope == Mul_output_slope и Mul_output_slope == output_slope_of_shift_operation).

8 Требует скаляра, действительного, или типы данных с фиксированной точкой с нулевым смещением; выведите тип операции умножения, чтобы разместить все возможные выходные значения; и сетевой наклон равен 1 (U1_slope * U2_slope == Mul_output_slope == U3_slope * Div_output_slope).

Похожие темы