Блок MATLAB Function позволяет вам составить MATLAB® языковая функция в Simulink® модель, которая генерирует встраиваемый код. Когда вы симулируете модель или генерируете код для целевого окружения, функция в блоке MATLAB Function генерирует эффективный код C/C + +. Этот код соответствует строгим требованиям к памяти и типам данных целевых процессоров окружений. Таким образом, блоки MATLAB Function приносят в Simulink степень MATLAB для встраиваемого окружения.
Для получения дополнительной информации о 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™. Для получения информации о том, какие функции Fixed-Point Designer поддерживаются, обратитесь к разделу Функции, поддерживаемые для ускорения кода или генерации кода C
Для получения дополнительной информации о работе с блоками MATLAB Function с фиксированной точкой смотрите:
Примечание
Чтобы симулировать модели с использованием типов данных с фиксированной точкой в Simulink, вы должны иметь лицензию Fixed-Point Designer.
Можно задать параметры для блока MATLAB Function в модели с фиксированной точкой с помощью Model Explorer. Попробуйте следующее упражнение:
Поместите MATLAB Function блок в новую модель. Вы можете найти блок в библиотеке Simulink User-Defined Functions.
Откройте Model Explorer. На вкладке Modeling нажмите Model Explorer.
Разверните узел untitled* на панели < reservedrangesplaceholder1 > 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.
Эти параметры можно задать в следующем диалоговом окне, к которому можно получить доступ через Ports и Data Manager.
Для доступа к этой панели через браузер Model Explorer:
На вкладке Modeling нажмите Model Explorer.
Затем выберите блок MATLAB Function на панели Иерархия модели (Model Ierarchy) в левой части Обозревателя моделей (Model Explorer).
Чтобы получить доступ к этой панели через Диспетчер портов и данных, на вкладке Editor MATLAB, нажмите Edit Data.
Когда вы выбираете Same as MATLAB для MATLAB Function block fimath, блок MATLAB Function использует текущий fimath по умолчанию. Текущий fimath по умолчанию отображается затемненным и в форме только для чтения в поле редактирования.
Когда вы выбираете Specify other блок позволяет вам задавать свои собственные fimath
объект в поле редактирования. Это можно сделать одним из двух способов:
Построение fimath
объект внутри окна редактирования.
Построение fimath
объект в рабочем пространстве MATLAB или модели, а затем введите его имя переменной в поле редактирования.
Примечание
Если вы используете эту опцию и планируете совместно использовать модель с другими, убедитесь, что вы задаете переменную в рабочем пространстве модели. Смотрите Совместное использование Модели с Блоками MATLAB function с Фиксированной Точкой для получения дополнительной информации о моделях совместного использования.
The 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 появится как показано на следующем рисунке.
Теперь можно отправить модель по электронной почте коллеге. Поскольку вы включили необходимые переменные в рабочую область самой модели, ваш коллега может просто запустить модель и получить правильные результаты. Получение и выполнение модели не требует никаких дополнительных шагов.