MATLAB Function

Включайте код MATLAB в модели, которые генерируют встраиваемый код С

  • Библиотека:
  • Simulink / Пользовательские Функции

    HDL Coder / Пользовательские Функции

  • MATLAB Function block

Описание

С блоком MATLAB Function можно записать функцию MATLAB® для использования в модели Simulink®. Функция MATLAB, которую вы создаете, выполняется для симуляции и генерирует код для цели Simulink Coder™. Если вы плохо знакомы с Simulink и продуктами MATLAB, смотрите, что функции MATLAB Реализации Используют Блоки, и Создайте Пользовательскую Функциональность Используя блок MATLAB function для обзора.

Двойной клик по блоку MATLAB function открывает свой редактор, где вы пишете функцию MATLAB, как в этом примере:

Чтобы узнать больше об этом редакторе, см. Редактор блока MATLAB function.

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

Можно также задать данные, ввести триггеры и вызов функции выходные параметры с помощью Портов и Менеджера данных, к которому вы получаете доступ из Редактора блока MATLAB function путем выбора Edit Data. Смотрите Порты и Менеджер данных.

Блок MATLAB Function генерирует эффективный встраиваемый код на основе анализа, который определяет размер, класс и сложность каждой переменной. Этот анализ вводит следующие ограничения:

В дополнение к ограничениям языка блок MATLAB Function поддерживает подмножество функций, доступных в MATLAB. Список поддерживаемых функций дан в Функциях и Объектах, Поддержанных для Генерации кода C/C++. Эти функции включают функции в общие категории, такие как:

Примечание

Несмотря на то, что код для этого блока пытается привести точно к тем же результатам как MATLAB, различия могут произойти из-за погрешностей округления. Эти числовые различия, которые могут быть некоторыми eps первоначально, может увеличить после повторенных операций. Уверенность в поведении nan не рекомендуется. Различные компиляторы C могут привести к различным результатам для того же расчета.

Примечание

В блоке MATLAB Function, %#codegen директива включена, чтобы подчеркнуть, что алгоритм MATLAB блока всегда предназначается для генерации кода. %#codegen директива или отсутствие ее, не изменяет поведение проверки ошибок в контексте блока MATLAB Function. Для получения дополнительной информации смотрите Направляющий % Компиляции #codegen.

Чтобы поддержать визуализацию данных, блок MATLAB Function поддерживает вызовы функций MATLAB для симуляции только. Смотрите Использование MATLAB Engine, чтобы Выполнить Вызов функции в Сгенерированном коде, чтобы изучить некоторые ограничения этой возможности, и как это объединяется с анализом кода для этого блока. Если эти вызовы функции непосредственно не влияют ни на один из вводов или выводов Simulink, вызовы не появляются в сгенерированном коде Simulink Coder.

От блоков MATLAB Function можно также вызвать функции, определяемые в блоке Simulink Function. Можно вызвать функции Stateflow® с Export Chart Level Functions (Make Global), и Allow exported functions to be called by Simulink зарегистрировался в диалоговом окне свойств диаграммы.

В Портах и Менеджере данных, можно объявить, что вход блока параметр Simulink вместо порта. Блок MATLAB Function также поддерживает наследование типов и размера для входных параметров, выходных параметров и параметров. Можно также задать эти свойства явным образом. Смотрите Аргументы функции Типа, Аргументы функции Размера, и Добавьте Аргументы Параметра для описаний переменных, которые вы используете в блоках MATLAB Function.

Рекурсивные вызовы не позволены в блоках MATLAB Function.

По умолчанию блоки MATLAB Function имеют прямое включенное сквозное соединение. Чтобы отключить его, в Портах и Менеджере данных, снимают флажок Allow direct feedthrough. Непрямая проходная семантика гарантирует, что выходные параметры полагаются только на текущее состояние. Используя непрямое сквозное соединение позволяет вам использовать блоки MATLAB Function в обратной связи и предотвратить алгебраические циклы. Для получения дополнительной информации смотрите Использование Непрямое Сквозное соединение в блоке MATLAB function.

Порты

Входной параметр

развернуть все

Введите соответствие первому входному параметру функции в блоке MATLAB Function. Если вы переименовываете аргумент функции в редакторе, блок переименовывает порт соответственно.

Типы данных, поддержанные MATLAB, но не поддерживаемые Simulink, не могут быть переданы между моделью Simulink и функцией в блоке MATLAB Function. Эти типы могут использоваться в блоке MATLAB Function.

Для получения дополнительной информации о поддержке фиксированной точки этого блока обратитесь к Типам данных с фиксированной точкой с блоком MATLAB function (Fixed-Point Designer) и блок MATLAB function с Переопределением Типа данных (Fixed-Point Designer).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | string | fixed point | enumerated | bus

nвходной параметр th к функции в блоке MATLAB Function. Когда вы добавляете аргумент в редакторе, блок добавляет порт соответственно.

Типы данных, поддержанные MATLAB, но не поддерживаемые Simulink, не могут быть переданы между моделью Simulink и функцией в блоке MATLAB Function. Эти типы могут использоваться в блоке MATLAB Function.

Для получения дополнительной информации о поддержке фиксированной точки этого блока обратитесь к Типам данных с фиксированной точкой с блоком MATLAB function (Fixed-Point Designer) и блок MATLAB function с Переопределением Типа данных (Fixed-Point Designer).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | string | fixed point | enumerated | bus

Вывод

развернуть все

Первый выходной аргумент функции в блоке MATLAB Function. Если вы переименовываете аргумент функции в редакторе, блок переименовывает порт соответственно.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | string | fixed point | enumerated | bus

nвыходной аргумент th от функции в блоке MATLAB Function. Когда вы добавляете аргумент в редакторе, блок добавляет порт соответственно.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | string | fixed point | enumerated | bus

Характеристики блока

Типы данных

Boolean[a] | bus[a] | double[a] | enumerated[a] | fixed point[a] | integer[a] | single[a] | string[a]

Прямое сквозное соединение

no

Многомерные сигналы

limited[a]

Сигналы переменного размера

limited[a]

Обнаружение пересечения нулем

no

[a]  Фактическая поддержка типа данных или возможности зависит от реализации блока.

Расширенные возможности

Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.

Введенный в R2011a