coder.extrinsic

Пакет: кодер

Объявите внешнюю функцию или функции

Синтаксис

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, чтобы включить синхронизацию только для внешних вызовов, которые действительно изменяют глобальные данные.

Для постоянных глобальных данных, включает верификацию непротиворечивости между MATLAB и MEX-функциями после вызовов внешних функций, function_name или function_name_1 через function_name_n.

–sync:off

Отключает синхронизацию глобальных данных между MATLAB и MEX-функциями до и после вызовов внешних функций, function_name или function_name_1 через function_name_n. Если большинство внешних вызовов изменяет глобальные данные, но некоторые не делают, можно использовать опцию –sync:off, чтобы выключить синхронизацию для внешних вызовов, которые не изменяют глобальные данные.

Для постоянных глобальных данных, отключает верификацию непротиворечивости между MATLAB и MEX-функциями после вызовов внешних функций, function_name или function_name_1 через function_name_n.

Описание

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 для выполнения.

Введенный в R2011a