Конструктивные соображения кода MATLAB для генерации кода

При записи кода MATLAB®, который вы хотите преобразовать в эффективный, автономный код C/C++, необходимо рассмотреть следующее:

  • Типы данных

    C и C++ используют статический контроль типов. Чтобы определить типы ваших переменных перед использованием, MATLAB Coder™ требует полного присвоения на каждую переменную.

  • Размерности массивов

    Массивы переменного размера и матрицы поддерживаются для генерации кода. Можно задать входные параметры, выходные параметры и локальные переменные в функциях MATLAB, чтобы представлять данные, которые отличаются по размеру во время выполнения.

  • Память

    Можно выбрать, использует ли сгенерированный код статическое или динамическое выделение памяти.

    С динамическим выделением памяти вы потенциально используете меньше памяти за счет времени, чтобы управлять памятью. Со статической памятью вы получаете лучшую скорость, но с более высоким использованием памяти. Большая часть кода MATLAB использует в своих интересах динамические функции калибровки в MATLAB, поэтому динамическое выделение памяти обычно позволяет вам сгенерировать код из существующего кода MATLAB, не слишком изменяя его. Динамическое выделение памяти также позволяет некоторым программам компилироваться, даже когда верхние границы не могут быть найдены.

    Статическое выделение уменьшает объем потребляемой памяти сгенерированного кода, и поэтому подходит для приложений, где существует ограниченная сумма доступной памяти, такой как встраиваемые приложения.

  • Скорость

    Поскольку встраиваемые приложения должны запуститься в режиме реального времени, код должен быть достаточно быстрым, чтобы соответствовать необходимой тактовой частоте.

    Улучшить скорость сгенерированного кода:

    • Выберите подходящий компилятор C/C++. Не используйте компилятор по умолчанию, что MathWorks® предоставляет MATLAB для Windows® 64-битные платформы.

    • Рассмотрите проверки на этапе выполнения отключения.

      По умолчанию, для безопасности, код, сгенерированный для вашего кода MATLAB, содержит проверки целостности памяти и проверки скорости отклика. Обычно эти проверки приводят к большему количеству сгенерированного кода и более медленной симуляции. Отключение проверок на этапе выполнения обычно приводит к оптимизированному сгенерированному коду и более быстрой симуляции. Отключите эти проверки, только если вы проверили, что границы массивов и проверка размерности являются ненужными.

Смотрите также