Пакет: кодер
Объявите внешнюю функцию или функции
coder.extrinsic('function_name');
coder.extrinsic('function_name_1', ... , 'function_name_n');
coder.extrinsic('-sync:on', 'function_name');
coder.extrinsic('-sync:on', 'function_name_1', ... , 'function_name_n');
coder.extrinsic('-sync:off','function_name');
coder.extrinsic('-sync:off', 'function_name_1', ... , 'function_name_n');
function_name
function_name_1..., function_name_n
Объявляет function_name
или function_name_1
через function_name_n
как внешние функции.
–sync:on
function_name
или function_name_1
через function_name_n
.
Включает синхронизацию глобальных данных между MATLAB® и MEX-функциями до и после вызовов внешних функций, function_name
или function_name_1
через function_name_n
. Если только несколько внешних вызовов изменяют глобальные данные, выключают синхронизацию до и после всех внешних вызовов функции путем установки глобального режима синхронизации на At MEX-function entry and exit
. Используйте опцию –sync:on, чтобы включить синхронизацию только для внешних вызовов, которые действительно изменяют глобальные данные.
–sync:off
Отключает синхронизацию глобальных данных между MATLAB и MEX-функциями до и после вызовов внешних функций, function_name
или function_name_1
через function_name_n
. Если большинство внешних вызовов изменяет глобальные данные, но некоторые не делают, можно использовать опцию –sync:off, чтобы выключить синхронизацию для внешних вызовов, которые не изменяют глобальные данные.
coder.extrinsic
объявляет внешние функции. Во время симуляции генератор кода производит код для вызова внешней функции, но не производит внутренний код функции. Поэтому симуляция может запуститься только на платформах, где программное обеспечение MATLAB установлено. Во время автономной генерации кода MATLAB пытается определить, влияет ли внешняя функция на вывод функции, в которой это называется — например, путем возврата mxArrays
выходной переменной. При условии, что нет никакого изменения в выводе, доходах MATLAB с генерацией кода, но не исключает внешнюю функцию из сгенерированного кода. В противном случае ошибки компиляции происходят.
Вы не можете использовать coder.ceval
на функциях, которые вы объявляете внешний при помощи coder.extrinsic
.
coder.extrinsic
проигнорирован за пределами генерации кода.
Внешние вызовы функции имеют немного служебные, который может влиять на производительность. Входные данные, который передается во внешнем вызове функции, должны быть предоставлены MATLAB, который требует создания копии данных. Если функция имеет какие-либо выходные данные, эти данные должны быть возвращены в среду MEX-функции, которая также требует копии.
Генератор кода не поддерживает использование coder.extrinsic
, чтобы вызвать функции, которые расположены в частной папке.
Генератор кода не поддерживает использование coder.extrinsic
, чтобы вызвать локальные функции.
Генератор кода обнаруживает вызовы многих общих функций визуализации, таких как plot
, disp
и figure
. Программное обеспечение обрабатывает эти функции как внешние функции, но вы не должны объявлять их внешнее использование функции coder.extrinsic
.
Используйте функцию coder.screener
, чтобы обнаружить, какие функции необходимо объявить внешний. Эта функция открывает инструмент готовности генерации кода, который обнаруживает проблемы генерации кода в вашем коде MATLAB.
Следующий код объявляет функцию MATLAB patch
как внешнюю в локальной функции MATLAB create_plot
.
function c = pythagoras(a,b,color) %#codegen % Calculates the hypotenuse of a right triangle % and displays the triangle as a patch object. c = sqrt(a^2 + b^2); create_plot(a, b, color); function create_plot(a, b, color) %Declare patch as extrinsic coder.extrinsic('patch'); x = [0;a;a]; y = [0;0;b]; patch(x, y, color); axis('equal');
Путем объявления patch
как внешнего, вы даете генератору кода команду не компилировать или производить код для patch
. Вместо этого генератор кода отправляет patch
MATLAB для выполнения.