При записи кода MATLAB®, который вы хотите преобразовать в эффективный, автономный код C/C++, необходимо рассмотреть следующее:
Типы данных
C и C++ используют статический контроль типов. Чтобы определить типы ваших переменных перед использованием, MATLAB Coder™ требует полного присвоения на каждую переменную.
Калибровка массивов
Массивы переменного размера и матрицы поддерживаются для генерации кода. Можно задать входные параметры, выходные параметры и локальные переменные в функциях MATLAB, чтобы представлять данные, которые отличаются по размеру во время выполнения.
Memory
Можно выбрать, использует ли сгенерированный код статическое или динамическое выделение памяти.
С динамическим выделением памяти вы потенциально используете меньше памяти за счет времени, чтобы управлять памятью. Со статическим ЗУ вы получаете лучшую скорость, но с более высоким использованием памяти. Большая часть кода MATLAB использует в своих интересах динамические функции калибровки в MATLAB, поэтому динамическое выделение памяти обычно позволяет вам сгенерировать код из существующего кода MATLAB, не изменяя его очень. Динамическое выделение памяти также позволяет некоторым программам компилировать, даже когда верхние границы не могут быть найдены.
Статическое выделение уменьшает объем потребляемой памяти сгенерированного кода, и поэтому подходит для приложений, где существует ограниченная сумма доступной памяти, такой как встраиваемые приложения.
Скорость
Поскольку встраиваемые приложения должны запуститься в режиме реального времени, код должен быть достаточно быстрым, чтобы соответствовать необходимой тактовой частоте.
Улучшить скорость сгенерированного кода:
Выберите подходящий компилятор C/C++. Не используйте компилятор по умолчанию, что MathWorks® предоставляет MATLAB для Windows® 64-битные платформы.
Рассмотрите проверки на этапе выполнения отключения.
По умолчанию, для безопасности, код, сгенерированный для вашего кода MATLAB, содержит проверки целостности памяти и проверки скорости отклика. Обычно эти проверки приводят к большему количеству сгенерированного кода и более медленной симуляции. Отключение проверок на этапе выполнения обычно приводит к оптимизированному сгенерированному коду и более быстрой симуляции. Отключите эти проверки, только если вы проверили, что границы массивов и проверка размерности являются ненужными.