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