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