Функция MATLAB

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

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

Описание

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

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

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

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

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

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

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

Смотрите Функции и Объекты, Поддержанные для Генерации кода C/C++ — Список Категорий для полного списка функциональных категорий.

Примечание

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

Примечание

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

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

От блоков MATLAB function можно также вызвать функции, определяемые в Функциональном блоке Симулинка. Можно вызвать функции Stateflow® с Функциями Уровня Графика Экспорта (Сделайте Глобальную переменную), и Позвольте экспортируемым функциям быть вызванными Симулинком, зарегистрировался в диалоговом окне свойств диаграммы.

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

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

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

Порты

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

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

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

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

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | uint8 | uint16 | uint32 | булевская переменная | фиксированная точка | перечисленный | шина

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

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

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | uint8 | uint16 | uint32 | булевская переменная | фиксированная точка | перечисленный | шина

Вывод

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

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | uint8 | uint16 | uint32 | булевская переменная | фиксированная точка | перечисленный | шина

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | uint8 | uint16 | uint32 | булевская переменная | фиксированная точка | перечисленный | шина

Образцовые примеры

Блокируйте характеристики

Типы данных

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

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

No

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

Yes[a]

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

Yes[a]

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

No

A 

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

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

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

Введенный в R2011a

Была ли эта тема полезной?