Определение функции

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

При создании 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 Engine для выполнения вызова функции в сгенерированном коде

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

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

Неконстантный индекс в вараргин или вараргаут в цикле for-Loop

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

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

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

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

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

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

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