Вы можете сгенерировать код C/C + + в MATLAB® из системы, содержащей системные объекты при помощи MATLAB Coder™. Можно сгенерировать эффективный и компактный код для развертывания в настольных и встраиваемых системах и ускорить алгоритмы с фиксированной точкой.
Следующие правила использования и ограничения применяются к использованию системных объектов в коде, сгенерированном из MATLAB.
Конструкция и инициализация объектов
Если объекты хранятся в стойких переменных, инициализируйте Системные объекты один раз, встраивая указатели на объекты в if
оператор с вызовом на isempty()
.
Установите аргументы в конструкторы System object™ как константы времени компиляции.
Инициализируйте все свойства системных объектов, которые releaseImpl
использует до конца setupImpl
.
Вы не можете инициализировать свойства системных объектов с другими объектами класса MATLAB как значения по умолчанию при генерации кода. Необходимо инициализировать эти свойства в конструкторе.
Входы и выходы
Системные объекты принимают максимум 1024 входы. Поддерживаются максимум восемь размерностей на вход.
Тип данных входов не должен меняться.
Сложность входов не должна меняться.
Если необходимо изменить размер входов, проверьте, что поддержка переменного размера включена. Поддержка генерации кода для данных переменного размера также требует, чтобы поддержка переменного размера была включена. По умолчанию в MATLAB включена поддержка данных переменного размера.
Системные объекты, предопределенные в программном обеспечении, не поддерживают переменный размер, если их данные превышают DynamicMemoryAllocationThreshold
значение.
Не устанавливайте Системные объекты, чтобы стать выходами из блока MATLAB Function (Simulink).
Не используйте Save and Restore Симуляции State как опция SimState ни для каких Системных объектов в блоке MATLAB Function (Simulink).
Не передайте системный объект в качестве примера входного параметра функции, компилируемой с codegen
.
Не передайте Системный объект функциям, объявленным как внешние (функции, вызываемые в интерпретированном режиме), используя coder.extrinsic
функция. Системные объекты, возвращенные из внешних функций и возможностей System, которые автоматически становятся внешними, могут использоваться в качестве входов в другую внешнюю функцию. Но, эти функции не генерируют код.
Свойства
В 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.