Блок MATLAB Function позволяет вам составить функцию языка MATLAB® в модели Simulink®, которая генерирует встраиваемый код. Когда вы симулируете модель или генерируете код для целевого окружения, функция в блоке MATLAB Function генерирует эффективный код C/C++. Этот код встречает строгой памяти и требованиям типа данных сред целевого процессора. Таким образом блоки MATLAB Function приносят степень MATLAB для встроенной среды в Simulink.
Для получения дополнительной информации о блоке MATLAB Function и генерации кода, обратитесь к следующему:
Страница с описанием блока MATLAB Function в документации Simulink
Рабочий процесс генерации кода (MATLAB Coder)
Когда вы используете блок MATLAB Function в модели Simulink, которая задает переопределение типа данных, блок определяет эквиваленты переопределения типа данных типов параметра и входного сигнала. Блок затем использует эти эквивалентные стоимости, чтобы запустить симуляцию. Следующая таблица показывает, как блок MATLAB Function решает, что тип данных заменяет эквивалентное использование
Тип данных входного сигнала или параметра
Настройки переопределения типа данных в модели Simulink
Для получения дополнительной информации о переопределении типа данных, смотрите fxptdlg
.
Входной сигнал или тип параметра | Установка переопределения типа данных | Переопределение типа данных применяется к установке | Замените тип данных |
---|---|---|---|
Наследованный single | Double | All numeric types или Floating-point | Встроенный double |
Single | All numeric types или Floating-point | Встроенный single | |
Scaled double | All numeric types или Floating-point | fi scaled double | |
Заданный single | Double | All numeric types или Floating-point | Встроенный double |
Single | All numeric types или Floating-point | Встроенный single | |
Scaled double | All numeric types или Floating-point | fi scaled double | |
Наследованный double | Double | All numeric types или Floating-point | Встроенный double |
Single | All numeric types или Floating-point | Встроенный single | |
Scaled double | All numeric types или Floating-point | fi scaled double | |
Заданный double | Double | All numeric types или Floating-point | Встроенный double |
Single | All numeric types или Floating-point | Встроенный single | |
Scaled double | All numeric types или Floating-point | fi scaled double | |
Наследованный Fixed | Double | All numeric types или Fixed-point | fi double |
Single | All numeric types или Fixed-point | fi single | |
Scaled double | All numeric types или Fixed-point | fi scaled double | |
Заданный Fixed | Double | All numeric types или Fixed-point | fi double |
Single | All numeric types или Fixed-point | fi single | |
Scaled double | All numeric types или Fixed-point | fi scaled double |
Для получения дополнительной информации об использовании блока MATLAB Function с переопределением типа данных смотрите Используя Переопределение Типа данных с блоком MATLAB function.
Генерация кода из MATLAB поддерживает значительное количество функций Fixed-Point Designer™. Обратитесь к Функциям, Поддерживаемым для Ускорения Кода или генерации кода C для получения информации, о которой поддерживаются функции Fixed-Point Designer.
Для получения дополнительной информации о работе с фиксированной точкой блоки MATLAB Function см.:
Примечание
Чтобы симулировать модели с помощью типов данных с фиксированной точкой в Simulink, у вас должна быть лицензия Fixed-Point Designer.
Можно задать параметры для блока MATLAB Function в модели фиксированной точки использование Model Explorer. Попробуйте следующее осуществление:
Поместите блок MATLAB Function в новую модель. Можно найти блок в библиотеке Simulink User-Defined Functions.
Откройте Model Explorer. На вкладке Modeling нажмите Model Explorer.
Расширьте узел untitled* в панели Model Hierarchy Model Explorer. Затем выберите узел MATLAB Function. Model Explorer теперь появляется как показано в следующем рисунке.
Следующие параметры в панели Dialog применяются к блокам MATLAB Function в моделях, которые используют типы данных с фиксированной точкой и целочисленные типы данных:
Выберите, обработать ли наследованную фиксированную точку и целочисленные сигналы как fi
объекты.
Когда вы выбираете Fixed-point
, блок MATLAB Function обрабатывает все входные параметры фиксированной точки как Fixed-Point Designer fi
объекты.
Когда вы выбираете Fixed-point & Integer
, блок MATLAB Function обрабатывает всю фиксированную точку и целочисленные входные параметры как Fixed-Point Designer fi
объекты.
Задайте fimath
свойства для блока, чтобы сопоставить со следующими объектами:
Вся фиксированная точка и целочисленные входные сигналы с блоком MATLAB Function, который вы принимаете решение обработать как fi
объекты.
Весь fi
и fimath
объекты создаются в блоке MATLAB Function.
Можно выбрать одну из следующих опций для MATLAB Function block fimath:
Same as MATLAB — Когда вы выбираете эту опцию, блок использует тот же fimath
свойства как текущее значение по умолчанию fimath. Окно редактирования появляется, потускнел и отображает текущее значение по умолчанию fimath в форме только для чтения.
Specify Other — Когда вы выбираете эту опцию, можно задать собственный fimath
объект в окне редактирования.
Для получения дополнительной информации об этих параметрах смотрите Используя Объекты fimath в блоках MATLAB function.
Параметр MATLAB Function block fimath позволяет вам задать один набор fimath
свойства объектов для блока MATLAB Function. Блок сопоставляет fimath
свойства вы задаете со следующими объектами:
Вся фиксированная точка и целочисленные входные сигналы с блоком MATLAB Function, который вы принимаете решение обработать как fi
объекты.
Весь fi
и fimath
объекты создаются в блоке MATLAB Function.
Можно установить эти параметры на следующем диалоговом окне, к которому можно получить доступ через Порты и Менеджер данных.
Получить доступ к этой панели через Model Explorer:
На вкладке Modeling нажмите Model Explorer.
Затем выберите блок MATLAB Function из панели Иерархии модели на левой стороне Model Explorer.
Получить доступ к этой панели через Порты и Менеджер данных, на вкладке MATLAB Editor, clickEdit Data.
Когда вы выбираете Same as MATLAB для MATLAB Function block fimath, блок MATLAB Function использует текущее значение по умолчанию fimath. Текущее значение по умолчанию fimath появляется, потускнел и в форме только для чтения в окне редактирования.
Когда вы выбираете Specify other, блок позволяет вам задавать свой собственный fimath
объект в окне редактирования. Можно сделать так одним из двух способов:
Построение fimath
возразите в окне редактирования.
Построение fimath
объект в рабочем пространстве MATLAB или рабочем пространстве модели и затем вводе его имени переменной в окне редактирования.
Примечание
Если вы используете эту опцию и планируете совместно использовать свою модель с другими, убедитесь, что вы задаете переменную в рабочем пространстве модели. Смотрите Совместное использование Моделей с блоками MATLAB function Фиксированной точки для получения дополнительной информации о совместном использовании моделей.
Fixed-Point Designer isfimathlocal
функционируйте генерация кода поддержек для MATLAB.
Когда вы сотрудничаете с коллегой, можно совместно использовать модель фиксированной точки использование блока MATLAB Function. Чтобы совместно использовать модель, убедитесь, что вы перемещаете любые переменные, которые вы задаете в рабочем пространстве MATLAB, включая fimath
объекты, к рабочему пространству модели. Например, попробуйте следующее:
Поместите блок MATLAB Function в новую модель. Можно найти блок в библиотеке Simulink User-Defined Functions.
Задайте fimath
объект в рабочем пространстве MATLAB, что вы хотите использовать для любого сигнала фиксированной точки Simulink ввод блока MATLAB Function как вход:
F = fimath('RoundingMethod','Floor','OverflowAction','Wrap',... 'ProductMode','KeepLSB','ProductWordLength',32,... 'SumMode','KeepLSB','SumWordLength',32) F = RoundingMethod: Floor OverflowAction: Wrap ProductMode: KeepLSB ProductWordLength: 32 SumMode: KeepLSB SumWordLength: 32 CastBeforeSum: true
Откройте Model Explorer. На вкладке Modeling нажмите Model Explorer.
Расширьте узел untitled* в панели Model Hierarchy Model Explorer и выберите узел MATLAB Function.
Выберите Specify other для параметра MATLAB Function block fimath и введите переменную F
в окно редактирования на панели Dialog. Нажмите Apply, чтобы сохранить ваши изменения.
Вы теперь задали fimath
свойства, которые будут сопоставлены со всеми входными сигналами фиксированной точки Simulink и всем fi
и fimath
объекты создаются в блоке.
Выберите узел Base Workspace в панели Model Hierarchy. Вы видите переменную F
то, что вы задали в рабочем пространстве MATLAB, перечисленном в панели Contents. Если вы отправляете эту модель коллеге, тот коллега должен сначала задать ту же самую переменную в рабочем пространстве MATLAB, чтобы получить те же результаты.
Сократите переменную F
от базового рабочего пространства и вставки это в рабочее пространство модели, перечисленное под узлом для вашей модели, в этом случае, untitled*. Model Explorer теперь появляется как показано в следующем рисунке.
Можно теперь послать модель по электронной почте коллеге. Поскольку вы включали необходимые переменные в рабочую область самой модели, ваш коллега может просто запустить модель и получить правильные результаты. Получение и выполнение модели не требуют никаких дополнительных шагов.