Код, который заменяет генератор кода, зависит от используемой библиотеки замещения кода (CRL). По умолчанию генератор кода не применяет библиотеку замены кода. Выбор библиотек зависит от лицензирования продукта и наличия доступа к пользовательским библиотекам.
Дополнительные сведения о том, как исследовать функции и операторы, поддерживаемые библиотекой замещения кода, см. в разделе Выбор лицензии библиотеки замещения кода и необходимость разработки библиотеки замещения пользовательского кода, см. в разделе Индивидуальной настройке замещения кода.
При генерации кода C/C + + из Simulink® модель, в зависимости от библиотек замещения кода, доступных в среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих математических функций реализациями конкретного приложения.
Функция | Поддержка типа данных | Поддержка скаляров, векторов, матриц | Реальная, комплексная поддержка |
---|---|---|---|
abs 1 | Целое число Плавающая точка Фиксированная точка | Скаляр Вектор Матрица | Реальный |
acos | Плавающая точка | Скаляр | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
acosd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acosh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
acot 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acotd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acoth 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acsc 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acscd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acsch 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asec 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asecd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asech 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asin | Плавающая точка | Скаляр | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
asind 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asinh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
atan | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
atan2 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
atan2d 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
atand 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
atanh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
ceil | С плавающей точкой Скаляр | С плавающей точкой Скаляр | С плавающей точкой Скаляр |
cos 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
cosd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cosh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
cot 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cotd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
coth 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
csc 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cscd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
csch 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
exactrSqrt | Целое число Плавающая точка | Скаляр | Реальный |
exp | Плавающая точка | Скаляр Вектор Матрица | Реальный |
fix | Плавающая точка | Скаляр | Реальный |
floor | С плавающей точкой Скаляр | С плавающей точкой Скаляр | С плавающей точкой Скаляр |
fmod 4 | Плавающая точка | Скаляр | Реальный |
frexp | Плавающая точка | Скаляр | Реальный |
hypot | Плавающая точка | Скаляр Вектор Матрица | Реальный |
ldexp | Плавающая точка | Скаляр | Реальный |
ln | Плавающая точка | Скаляр | Реальный |
log | Плавающая точка | Скаляр Вектор Матрица | Реальный |
log10 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
log2 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
max | Целое число Плавающая точка Фиксированная точка | Скаляр | Реальный |
min | Целое число Плавающая точка Фиксированная точка | Скаляр | Реальный |
mod | Целое число Плавающая точка | Скаляр Вектор Матрица | Реальный |
pow | Плавающая точка | Скаляр Вектор Матрица | Реальный |
rem | Плавающая точка | Скаляр Вектор Матрица | Реальный |
round | Плавающая точка | Скаляр | Реальный |
rSqrt | Целое число Плавающая точка | Скаляр Вектор Матрица | Реальный |
saturate | Целое число Плавающая точка Фиксированная точка | Скаляр Вектор Матрица | Реальный |
sec 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
secd 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sech 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sign | Целое число Плавающая точка Фиксированная точка | Скаляр Вектор Матрица | Реальный |
signPow | Плавающая точка | Скаляр Вектор Матрица | Реальный |
sin 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
sincos 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
sind 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sinh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
sqrt | Целое число Плавающая точка Фиксированная точка | Скаляр Вектор Матрица | Реальный |
tan | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
tand 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
tanh | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплексный вход/комплексный выход Действительный вход/комплексный выход |
1 Перенос только при целочисленном переполнении. Очистить параметры блоков Saturate on integer overflow. 2 Только при использовании с блоком MATLAB Function. 3 Поддерживает метод CORDIC приближения. 4 Stateflow® поддержка только. |
При генерации кода C/C + + из диаграмм Stateflow, в зависимости от библиотек замены кода, доступных в вашей среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих математических функций реализациями, специфичными для приложения.
Функция | Поддержка типа данных | Поддержка скаляров, векторов, матриц | Реальная, комплексная поддержка |
---|---|---|---|
abs 1 | Целое число Плавающая точка | Скаляр | Реальный |
acos 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
acosd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acot 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acotd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acoth 3,5 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acsc 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acscd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
acsch 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asec 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asecd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asech 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
asin 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
asind 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
atan 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
atan2 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
atan2d 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
atand 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
ceil | С плавающей точкой Скаляр | С плавающей точкой Скаляр | С плавающей точкой Скаляр |
cos 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
cosd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cosh 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
cot 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cotd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
coth 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
csc 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
cscd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
csch 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
exp | Плавающая точка | Скаляр | Реальный |
floor | С плавающей точкой Скаляр | С плавающей точкой Скаляр | С плавающей точкой Скаляр |
fmod | Плавающая точка | Скаляр | Реальный |
hypot 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный |
ldexp | Плавающая точка | Скаляр | Реальный |
log 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
log10 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
log2 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
max | Целое число Плавающая точка | Скаляр | Реальный |
min | Целое число Плавающая точка | Скаляр | Реальный |
pow | Плавающая точка | Скаляр | Реальный |
sec 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
secd 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sech 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sin 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
sind 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
sinh 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
sqrt | Плавающая точка | Скаляр | Реальный |
tan 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
tand 3 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс |
tanh 2 | Плавающая точка | Скаляр Вектор Матрица | Реальный Комплекс Комплексный вход/комплексный выход Действительный вход/комплексный выход |
1 Перенос только при целочисленном переполнении. 2 Для моделей, включающих векторы или матрицы, генератор кода заменяет только функции, закодированные в MATLAB® язык действий. 3 Генератор кода заменяет только функции, закодированные на языке действий MATLAB. 4Embedded Coder® не поддерживает использование библиотек замещения кода для машинно-родительских данных. |
В зависимости от библиотек замены кода, доступных в среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих функций памяти реализациями конкретного приложения.
Функция | Поддержка типа данных | Поддержка скаляров, векторов, матриц | Реальная, комплексная поддержка |
---|---|---|---|
memcmp | Пустой указатель (void* ) | Скаляр Вектор Матрица | Реальный Комплекс |
memcpy | Пустой указатель (void* ) | Скаляр Вектор Матрица | Реальный Комплекс |
memset | Пустой указатель (void* ) | Скаляр Вектор Матрица | Реальный Комплекс |
memset2zero | Пустой указатель (void* ) | Скаляр Вектор Матрица | Реальный Комплекс |
Некоторые целевые процессоры обеспечивают оптимизированные функции, чтобы установить память на нуль. Используйте интерфейс программирования библиотеки замены кода, чтобы заменить memset2zero
функция с более эффективными целевыми функциями.
В зависимости от библиотек замены кода, доступных в среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих нефинитных функций реализациями конкретного приложения.
Функция | Поддержка типа данных | Поддержка скаляров, векторов, матриц | Реальная, комплексная поддержка |
---|---|---|---|
getInf | Плавающая точка | Скаляр | Реальный |
getMinusInf | Плавающая точка | Скаляр | Реальный |
getNaN | Плавающая точка | Скаляр | Реальный |
rtIsInf | Плавающая точка | Скаляр | Реальный Комплекс |
rtIsNaN | Плавающая точка | Скаляр | Реальный Комплекс |
Функции Mutex и Semaphore управляют доступом к ресурсам, совместно используемым несколькими процессами в многоядерных целевых окружениях. MathWorks® предоставляет библиотеки замены кода, поддерживающие замену мьютексов и семафоров для блоков Rate Transition и Task Transition в Windows®, Linux®, Mac и VxWorks® платформы.
Сгенерированные мьютекс и семафорный код обычно состоят из:
В коде инициализации модели функция инициализации вызывает, чтобы создать мьютекс или семафор, чтобы управлять входом в критический раздел кода.
В коде шага модели:
Прежде чем код для передачи данных между задачами войдет в критический раздел, mutex lock или semaphore wait function вызовет резервирование критического раздела кода.
После того, как код для передачи данных между задачами завершает выполнение критической секции, mutex разблокирует или semaphore post function вызывает, чтобы освободить критическую часть кода.
В коде завершения модели необязательный вызов функции уничтожения для явного удаления мьютекса или семафора.
В зависимости от библиотек замены кода, доступных в среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих функций mutex и semaphore реализациями конкретного приложения.
Функция | Ключ |
---|---|
Mutex Destroy | RTW_MUTEX_DESTROY |
Mutex Init | RTW_MUTEX_INIT |
Блокировка Мьютекса | RTW_MUTEX_LOCK |
Разблокировка Мьютекса | RTW_MUTEX_UNLOCK |
Семафор Уничтожить | RTW_SEM_DESTROY |
Semaphore Init | RTW_SEM_INIT |
Семафорная почта | RTW_SEM_POST |
Подождите семафор | RTW_SEM_WAIT |
При генерации кода C/C + + из модели Simulink, в зависимости от библиотек замены кода, доступных в вашей среде разработки, можно сконфигурировать генератор кода, чтобы заменить образцы следующих операторов реализациями, специфичными для конкретного приложения.
Поддержка смешанного типа данных указывает, что можно задать различные типы данных для различных входов.
Оператор | Ключ | Поддержка типа данных | Поддержка скаляров, векторов, матриц | Реальная, комплексная поддержка |
---|---|---|---|---|
Сложение (+ )1 | RTW_OP_ADD | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Вычитание (- )1 | RTW_OP_MINUS | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Умножение (* )2 | RTW_OP_MUL | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Деление (/ ) | RTW_OP_DIV | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр | Реальный Комплекс |
Преобразование типа данных (приведение) | RTW_OP_CAST | Целое число Плавающая точка3 Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Сдвиг налево (<< ) | RTW_OP_SL | Целое число Фиксированная точка Смешанный | Скаляр Вектор Матрица4 | Реальный |
Сдвиньте правую арифметику (>> )5 | RTW_OP_SRA | Целое число Фиксированная точка Смешанный | Скаляр Вектор Матрица4 | Реальный |
Сдвиньте правую логическую (>> ) | RTW_OP_SRL | Целое число Фиксированная точка Смешанный | Скаляр Вектор Матрица4 | Реальный |
Поэлементное матричное умножение (.* )6 | RTW_OP_ELEM_MUL | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Матричное правое деление (/ ) | RTW_OP_RDIV | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Матричное левое деление (\ ) | RTW_OP_LDIV | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Матричная инверсия (inv ) | RTW_OP_INV | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Комплексное сопряжение | RTW_OP_CONJUGATE | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Транспозиция (.' ) | RTW_OP_TRANS | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Эрмитова (комплексная сопряженная) транспозиция (' ) | RTW_OP_HERMITIAN | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Умножение с транспозицией2 | RTW_OP_TRMUL | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Умножение с эрмитовой транспозицией2 | RTW_OP_HMMUL | Целое число Плавающая точка Фиксированная точка Смешанный | Вектор Матрица | Реальный Комплекс |
Умножение с последующим сдвигом правой арифметики (u1*u2>>u3 )7 | RTW_OP_MUL_SRA | Целое число Фиксированная точка | Скаляр | Реальный |
Умножение с последующим делением (u1*u2/u3 )8 | RTW_OP_MULDIV | Целое число Фиксированная точка | Скаляр | Реальный |
Больше (> ) | RTW_OP_GREATER_ | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Больше или равно (>= ) | RTW_OP_GREATER_ | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Меньше, чем (< ) | RTW_OP_LESS_THAN | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Меньше или равно (<= ) | RTW_OP_LESS_THAN_ | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Равный (== ) | RTW_OP_EQUAL | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
Не равно (!= ) | RTW_OP_NOT_EQUAL | Целое число Плавающая точка Фиксированная точка Смешанный | Скаляр Вектор Матрица | Реальный Комплекс |
1 Дополнительные сведения см. в разделе Замена кода оператора сложения и вычитания при определении отображений для замен кода сложения и вычитания. 2 Может сопоставить с Базовые подпрограммы линейной алгебры (BLAS) функции умножения. 3 Масштабирование с плавающей точкой не поддерживается. 4 Сдвиг оператора на матричные данные поддерживается для сдвига значений, которые вы задаете портом входа. Замена не поддерживается для значений сдвига, заданных в диалоговом окне параметров блоков. 5 Генератор кода преобразует некоторые арифметические права на сдвиг в логические права на сдвиг. Чтобы избежать неожиданных результатов, при создании библиотеки замены кода, которая включает запись таблицы для арифметического сдвига правой реализации, также включите запись для логического сдвига правильной реализации. 6 Используйте умножение ( 7 Требует скалярных, реальных или типов данных с фиксированной точкой с нулевым смещением; выходной тип операции умножения для размещения всех возможных выходных значений; shift operand является беззнаковым целым числом; и уклон сети равен 1 ( 8 Требует скалярных, реальных или типов данных с фиксированной точкой с нулевым смещением; выходной тип операции умножения для размещения всех возможных выходных значений; и уклон сети равен 1 ( |