Функциональное определение

Определение и вызов функций для генерации кода

Существуют специальные замечания, когда вы создаете MATLAB® функции, которые предназначаются для генерации кода. Они включают определенные ограничения, когда вы используете varargin и varargout, рекурсивные функции, анонимные функции и вложенные функции. Чтобы сгенерировать код для рекурсивных функций MATLAB, генератор кода использует или рекурсию времени компиляции или рекурсию во время выполнения. Чтобы произвести эффективный код C/C++, генератор кода иногда создает несколько версий функции, называемой функциональными специализациями. В определенных случаях можно препятствовать тому, чтобы генератор кода создал функциональные специализации при помощи coder.ignoreConst и coder.ignoreSize. При генерации MEX-функции можно обойти генерацию кода для определенной функции в коде MATLAB и вместо этого использовать движок MATLAB, чтобы выполнить вызов. Для этого используйте coder.extrinsic создать.

Функции

coder.extrinsicОбъявите функцию как значение внешних параметров и выполните его в MATLAB
coder.ignoreConstПредотвратите использование постоянного значения выражения для функциональных специализаций
coder.ignoreSizeПрепятствуйте тому, чтобы генератор кода создал функциональные специализации для выражений постоянного размера
coder.noImplicitExpansionInFunctionОтключите неявное расширение в заданной функции в сгенерированном коде

Темы

Директива компиляции %#codegen

Укажите, что функция MATLAB предназначается для генерации кода.

Генерация кода для списков аргументов переменной длины

Сгенерируйте код для varargin и varargout.

Генерация кода для рекурсивных функций

Используйте рекурсивные функции в коде MATLAB, который предназначается для генерации кода.

Обеспечьте генератор кода, чтобы использовать рекурсию во время выполнения

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

Генерация кода для анонимных функций

Используйте анонимные функции в коде MATLAB, предназначенном для генерации кода.

Генерация кода для вложенных функций

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

Разрешение вызовов функции для генерации кода

Генератор кода использует правила приоритета, чтобы разрешить вызовы функции.

Разрешение типов файлов на пути генерации кода

Генератор кода использует правила приоритета, чтобы разрешить типы файлов.

Используйте MATLAB Engine, чтобы выполнить вызов функции в сгенерированном коде

Если функция не поддерживается для генерации кода, объявите, что он как extrinsic выполняется в MATLAB.

Поиск и устранение проблем

Непостоянный индекс в varargin или varargout в цикле for

Обеспечьте развертывание цикла, когда генератор кода не сможет определить значение индекса в varargin или varargout.

Избегайте дублирующихся функций в сгенерированном коде

Уменьшайте вхождение дублирующихся функций в сгенерированном коде.

Выходная переменная должна быть присвоена перед рекурсивным вызовом во время выполнения

Диагностируйте присвоение выходной переменной для рекурсии во время выполнения.

Достигнутый предел рекурсии времени компиляции

Диагностируйте предельную ошибку рекурсии времени компиляции.