Объявите функцию как внешнюю и выполните ее в MATLAB
coder.extrinsic(
объявляет function
)function
как внешнюю функцию. Генератор кода не производит код для тела внешней функции и вместо этого использует MATLAB® механизм для выполнения вызова. Эта функциональность доступна только, когда движок MATLAB доступен во время выполнения. Примеры ситуаций, во время которых движок MATLAB доступен, включают выполнение MEX-функций, Simulink® симуляции или вызовы функций во время генерации кода (также известное как compile time).
Во время генерации автономного кода генератор кода пытается определить, влияет ли внешняя функция на выход функции, в которой она вызывается - например, путем возврата mxArrays
в переменный выход. При условии, что нет никакого изменения выхода, генератор кода продолжает генерацию кода, но исключает внешнюю функцию из сгенерированного кода. В противном случае генератор кода производит ошибку компиляции.
Вы не можете использовать coder.ceval
на функциях, которые вы объявляете внешними coder.extrinsic
.
coder.extrinsic
игнорируется вне генерации кода.
Примечание
Генератор кода автоматически обрабатывает многие общие функции визуализации MATLAB, такие как plot
, disp
, и figure
, как внешняя. Вы не должны явно объявить их как внешние функции при помощи coder.extrinsic
.
coder.extrinsic(function1, ... ,functionN)
объявляет function1
через functionN
как внешние функции.
coder.extrinsic(
позволяет синхронизировать глобальные данные между выполнением MATLAB и выполнением сгенерированного кода или симуляцией Simulink до и после вызовов внешних функций '-sync:on'
, function1, ... ,functionN)function1
через functionN
. Если только несколько внешних вызовов используют или изменяют глобальные данные, отключите синхронизацию до и после всех внешних вызовов функции, установив в режиме глобальной синхронизации At MEX-function entry and exit
. Используйте '-sync:on'
опция включения синхронизации только для внешних вызовов, которые изменяют глобальные данные.
Если вы используете MATLAB Coder™ для генерации MEX-функции, включает верификацию непротиворечивости постоянных глобальных данных между MATLAB и MEX-функциями после вызовов внешних функций.
coder.extrinsic(
отключает синхронизацию глобальных данных между выполнением MATLAB и выполнением сгенерированного кода до и после вызовов внешних функций '-sync:off'
, function1, ... ,functionN)function1
через functionN
. Если большинство внешних вызовов используют или изменяют глобальные данные, но некоторые нет, используйте '-sync:off'
опция отключения синхронизации для внешних вызовов, которые не изменяют глобальные данные.
Если вы используете MATLAB Coder для генерации MEX-функции, отключает проверку непротиворечивости постоянных глобальных данных между MATLAB и MEX-функциями после вызовов внешних функций.
Внешние вызовы функций имеют некоторые накладные расходы, которые могут повлиять на эффективность. Входные данные, которые передаются во внешнем вызове функции, должны быть предоставлены MATLAB, который требует создания копии данных. Если функция имеет какие-либо выходные данные, эти данные должны быть перенесены обратно в окружение MEX-функции, которая также требует копирования.
Генератор кода не поддерживает использование coder.extrinsic
вызывать функции, расположенные в частной папке.
Генератор кода не поддерживает использование coder.extrinsic
вызов локальных функций.
Генератор кода автоматически обрабатывает многие общие функции визуализации MATLAB, такие как plot
, disp
, и figure
, как внешняя. Вы не должны явно объявить их как внешние функции при помощи coder.extrinsic
.
Используйте coder.screener
функция, чтобы обнаружить, какие функции вы должны объявить внешними. Эта функция запускает Code Generation Readiness Tool, который просматривает код MATLAB для функций и функций, которые не поддерживаются для генерации кода.