Можно сгенерировать код C/C++ в MATLAB® от системы, которая содержит Системные объекты при помощи MATLAB Coder™. Можно сгенерировать эффективный и компактный код для развертывания в настольных и встраиваемых системах и ускорить алгоритмы фиксированной точки.
Следующие правила использования и ограничения применяются к использованию Системных объектов в коде, сгенерированном из MATLAB.
Объектная конструкция и инициализация
Если объекты хранятся в персистентных переменных, инициализируют Системные объекты однажды путем встраивания указателей на объект в if
оператор с вызовом isempty()
.
Установите аргументы на Систему object™ конструкторы как константы времени компиляции.
Инициализируйте все свойства Системных объектов что releaseImpl
использование перед концом setupImpl
.
Вы не можете инициализировать свойства Системных объектов другими объектами класса MATLAB как значения по умолчанию в генерации кода. Необходимо инициализировать эти свойства в конструкторе.
Вводы и выводы
Системные объекты принимают максимум 1 024 входных параметров. Максимум восьми размерностей на вход поддерживается.
Тип данных входных параметров не должен изменяться.
Сложность входных параметров не должна изменяться.
Если вы хотите, чтобы размер входных параметров изменил, проверил, что поддержка переменного размера включена. Поддержка генерации кода данных переменного размера также требует, чтобы поддержка переменного размера была включена. По умолчанию в MATLAB, поддержка данных переменного размера включена.
Системные объекты, предопределенные в программном обеспечении, не поддерживают переменный размер, если их данные превышают DynamicMemoryAllocationThreshold
значение.
Не устанавливайте Системные объекты становиться выходными параметрами от блока MATLAB Function (Simulink).
Не используйте состояние Симуляции Сохранения и Восстановления в качестве опции SimState ни для какого Системного объекта в блоке MATLAB Function (Simulink).
Не передавайте Системный объект как входной параметр в качестве примера к функции, скомпилированной с codegen
.
Не передавайте Системный объект функциям, объявленным как значение внешних параметров (функции, вызванные в интерпретированном режиме) использование coder.extrinsic
функция. Системные объекты, возвращенные во внешние функции и Системные объекты осциллографа, которые автоматически становятся значением внешних параметров, могут использоваться в качестве входных параметров к другой внешней функции. Но, эти функции не генерируют код.
Свойства
В блоках MATLAB System вы не можете использовать переменный размер для свойств дискретного состояния Системных объектов. Частные свойства могут быть переменным размером.
Объекты не могут использоваться в качестве значений по умолчанию для свойств.
Можно только присвоить значения ненастраиваемым свойствам однажды, включая присвоение в конструкторе.
Ненастраиваемые значения свойств должны быть постоянными.
Для входных параметров фиксированной точки, если настраиваемое свойство имеет зависимые свойства типа данных, можно установить настраиваемые свойства только во время создания или после того, как объект заблокирован.
Для getNumInputsImpl
и getNumOutputsImpl
методы, если вы устанавливаете возвращаемый аргумент от свойства объекта, то свойство объекта, должны иметь Nontunable
атрибут.
Глобальные переменные
Глобальные переменные позволены в Системном объекте, если вы не используете тот Системный объект в Simulink® через блок MATLAB System. Смотрите Генерируют Код для Глобальных данных.
Методы
Поддержка генерации кода доступна только для этих методов Системного объекта:
get
isDone
(только для источников)
set
(для настраиваемых свойств)
Для Системных объектов, которые вы задаете, поддержка генерации кода доступна только для этих методов:
releaseImpl
— Код не сгенерирован автоматически для этого метода. Чтобы выпустить объект, необходимо явным образом вызвать release
метод в вашем коде.
Можно включать Системные объекты в код MATLAB таким же образом, вы включаете любые другие элементы. Можно затем скомпилировать файл MEX из кода MATLAB при помощи codegen
команда, которая доступна, если у вас есть лицензия MATLAB Coder. Этот процесс компиляции, который включает много оптимизации, полезен для ускорения симуляций. Смотрите Начало работы с MATLAB Coder и Классами MATLAB для получения дополнительной информации.
Примечание
Большинство, но не все, Системные объекты поддерживает генерацию кода. Обратитесь к странице с описанием конкретного объекта для получения информации.
Используя блок MATLAB Function (Simulink), можно включать любой Системный объект и любую функцию языка MATLAB в модели Simulink. Эта модель может затем сгенерировать встраиваемый код. Системные объекты предоставляют высокоуровневые алгоритмы генерации кода, чем делают самые связанные блоки. Для получения дополнительной информации смотрите, что функции MATLAB Реализации Используют Блоки (Simulink).
Используя блок MATLAB System (Simulink), можно включать в индивидуума модели Simulink Системные объекты, которые вы создаете с файлом определения класса. Модель может затем сгенерировать встраиваемый код. Для получения дополнительной информации см. MATLAB System Block (Simulink).
Программное обеспечение MATLAB Compiler™ поддерживает Системные объекты для использования в функциях MATLAB. Продукт компилятора не делает объектов системы поддержки для использования в скриптах MATLAB.