MATLAB Function

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

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

    HDL-кодер/пользовательские функции

  • MATLAB Function block

Описание

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

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

Дополнительные сведения об этом редакторе см. в разделе Блока MATLAB function Editor.

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

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

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

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

  • Арифметические операторы, такие как plus, minus, и power. Для получения дополнительной информации смотрите Array vs. Матричные операции.

  • Матричные операции, такие как size, и length

  • Расширенные матричные операции, такие как lu, inv, svd, и chol

  • Тригонометрические функции, подобные sin, cos, sinh, и cosh

Примечание

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

Примечание

В блоке MATLAB Function, %#codegen директива включена, чтобы подчеркнуть, что алгоритм MATLAB блока всегда предназначен для генерации кода. The %#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, отмеченными в диалоговом окне Свойств графика».

В Ports and Data Manager можно объявить вход блока параметром Simulink вместо порта. Блок MATLAB Function также поддерживает наследование типов и размера для входов, выходов и параметров. Можно также задать эти свойства явным образом. Смотрите Type Аргументы Функции, Size Function Arguments и Add Parameter Arguments для описания переменных, которые вы используете в MATLAB Function блоках.

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

По умолчанию MATLAB Function блоки имеют активированное прямое сквозное соединение. Чтобы отключить его, в Диспетчере портов и данных снимите флажок Allow direct feedthrough. Недирект исходной семантики гарантирует, что выходы зависят только от текущего состояния. Использование nondirect feedthrough позволяет вам использовать блоки MATLAB Function в цикле обратной связи и предотвращать алгебраические циклы. Для получения дополнительной информации смотрите Использование Nondirect Feedthrough в блоке 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пятый входной параметр функции в блоке 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

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

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

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

Типы данных

Булев[a] | шина[a] | double[a] | перечисленные[a] | фиксированную точку[a] | целое число[a] | сингл[a] | строка[a]

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

no

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

ограниченный[a]

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

ограниченный[a]

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

no

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

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

.

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

.
Введенный в R2011a