При создании функций MATLAB ®, предназначенных для создания кода, следует учитывать некоторые особенности. К ним относятся определенные ограничения при использованииvarargin и varargoutрекурсивные функции, анонимные функции и вложенные функции. Для генерации кода для рекурсивных функций MATLAB генератор кода использует либо рекурсию во время компиляции, либо рекурсию во время выполнения. Для создания эффективного кода C/C + + генератор кода иногда создает несколько версий функции, называемых функциональными специализациями. В некоторых случаях можно запретить генератору кода создавать специализации функций с помощью coder.ignoreConst и coder.ignoreSize. При генерации функции MEX можно обойти генерацию кода для определенной функции в коде MATLAB и вместо этого использовать механизм MATLAB для выполнения вызова. Для этого используйте coder.extrinsic конструкция.
coder.extrinsic | Объявить функцию как внешнюю и выполнить ее в MATLAB |
coder.ignoreConst | Предотвращение использования постоянного значения выражения для специализаций функций |
coder.ignoreSize | Запретить генератору кода создавать специализации функций для выражений постоянного размера |
Директива компиляции% # codegen
Укажите, что функция MATLAB предназначена для генерации кода.
Создание кода для списков аргументов переменной длины
Создать код для varargin и varargout.
Создание кода для рекурсивных функций
Используйте рекурсивные функции в коде MATLAB, предназначенном для создания кода.
Принудительное использование генератором кода рекурсии времени выполнения
Перепишите код MATLAB таким образом, чтобы генератор кода использовал рекурсию времени выполнения вместо рекурсии времени компиляции.
Создание кода для анонимных функций
Используйте анонимные функции в коде MATLAB, предназначенном для создания кода.
Создание кода для вложенных функций
Используйте вложенные функции в коде MATLAB, предназначенном для создания кода.
Разрешение вызовов функций для генерации кода
Генератор кода использует правила приоритета для разрешения вызовов функций.
Разрешение типов файлов по пути создания кода
Генератор кода использует правила приоритета для разрешения типов файлов.
Использование механизма MATLAB для выполнения вызова функции в сгенерированном коде
Если функция не поддерживается для генерации кода, объявите ее внешней для выполнения в MATLAB.
Некондиционный индекс в varargin или varargout в for-Loop
Принудительное размыкание контура, когда генератор кода не может определить значение индекса в varargin или varargout.
Избегать дублирования функций в сгенерированном коде
Уменьшите число повторяющихся функций в созданном коде.
Выходная переменная должна быть назначена перед рекурсивным вызовом во время выполнения
Устранение неполадок назначения выходных переменных для рекурсии во время выполнения.
Достигнут предел рекурсии во время компиляции
Устранение ошибок ограничения рекурсии во время компиляции.