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