Код, заменяемый генератором кода, зависит от используемой библиотеки замены кода (CRL). По умолчанию генератор кода не применяет библиотеку замены кода. Выбор библиотек зависит от лицензирования продукта и наличия доступа к пользовательским библиотекам.
Сведения о том, как исследовать функции и операторы, поддерживаемые библиотекой замены кода, см. в разделе Выбор лицензии библиотеки замены кода и необходимость разработки пользовательской библиотеки замены кода см. в разделе Настройка замены кода.
При создании кода 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 при переполнении целого числа. 2 Только при использовании с функциональным блоком MATLAB. 3 Поддерживает метод аппроксимации CORDIC. 4 Только поддержка 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 Для моделей, включающих векторы или матрицы, генератор кода заменяет только функции, кодированные на языке действий 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 вызывает резервирование критического раздела кода.
После того, как код для передачи данных между задачами завершит выполнение критического раздела, mutex unlock или semaphore post function вызывает, чтобы освободить критический раздел кода.
В коде завершения модели необязательный вызов функции уничтожения для явного удаления мьютекса или семафора.
В зависимости от доступных в среде разработки библиотек замены кода можно настроить генератор кода для замены экземпляров следующих функций мьютекса и семафора реализациями, специфичными для приложения.
| Функция | Ключ |
|---|---|
| Мутекс уничтожить | RTW_MUTEX_DESTROY |
| Мутекс-Инит | RTW_MUTEX_INIT |
| Блокировка мьютекса | RTW_MUTEX_LOCK |
| Разблокировка Mutex | RTW_MUTEX_UNLOCK |
| Семафор уничтожить | RTW_SEM_DESTROY |
| Семафор-Инит | 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 | Целое число Фиксированная точка Смешанный | Скаляр Вектор Matrix4 | Реальный |
Сдвинуть правую арифметику (>>)5 | RTW_OP_SRA | Целое число Фиксированная точка Смешанный | Скаляр Вектор Matrix4 | Реальный |
Сдвиг справа логический (>>) | RTW_OP_SRL | Целое число Фиксированная точка Смешанный | Скаляр Вектор Matrix4 | Реальный |
Элементное умножение матрицы (.*)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 Требует скалярных, вещественных или фиксированных типов данных с нулевым смещением; тип вывода операции умножения для размещения всех возможных выходных значений; сдвиговый операнд - целое число без знака; а чистый уклон равен 1 ( 8 Требует скалярных, вещественных или фиксированных типов данных с нулевым смещением; тип вывода операции умножения для размещения всех возможных выходных значений; а чистый уклон равен 1 ( | ||||