coder.extrinsic

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

Описание

пример

coder.extrinsic(function) объявляет function как внешняя функция. Генератор кода не производит код для тела внешней функции и вместо этого использует механизм MATLAB®, чтобы выполнить вызов. Эта функциональность доступна только, когда движок MATLAB доступен во время выполнения. Примеры ситуаций, во время которых движок MATLAB доступен, включают выполнение MEX-функций, симуляции Simulink® или вызовы функции во время генерации кода (также известный как compile time).

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

Вы не можете использовать coder.ceval на функциях, при помощи которых вы объявляете как значение внешних параметров coder.extrinsic.

coder.extrinsic проигнорирован за пределами генерации кода.

coder.extrinsic(function1, ... ,functionN) объявляет function1 через functionN когда значение внешних параметров функционирует.

coder.extrinsic('-sync:on', function1, ... ,functionN) включает синхронизацию глобальных данных между MATLAB и MEX-функциями до и после вызовов внешних функций function1 через functionN. Если только несколько внешних вызовов используют или изменяют глобальные данные, выключают синхронизацию до и после всех внешних вызовов функции путем установки глобального режима синхронизации на At MEX-function entry and exit. Используйте '-sync:on' опция, чтобы включить синхронизацию только для внешних вызовов, которые действительно изменяют глобальные данные.

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

Смотрите генерируют код для глобальных данных.

coder.extrinsic('-sync:off', function1, ... ,functionN) отключает синхронизацию глобальных данных между MATLAB и MEX-функциями до и после вызовов внешних функций function1 через functionN. Если большинство внешних вызовов использует или изменяет глобальные данные, но некоторые не делают, используйте '-sync:off' опция, чтобы выключить синхронизацию для внешних вызовов, которые не изменяют глобальные данные.

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

Смотрите генерируют код для глобальных данных.

Примеры

свернуть все

Функция MATLAB patch не поддерживается для генерации кода. В этом примере показано, как можно все еще использовать функциональность patch в вашей сгенерированной MEX-функции путем объявления patch как значение внешних параметров ваша функция MATLAB.

Этот код MATLAB объявляет patch как значение внешних параметров в локальной функции create_plot. Путем объявления patch как значение внешних параметров, вы даете генератору кода команду не производить код для patch. Вместо этого отправки генератора кода patch к MATLAB для выполнения.

Генератор кода автоматически обрабатывает много общих функций визуализации MATLAB, таких как функция axis как значение внешних параметров.

function c = pythagoras(a,b,color) %#codegen
% Calculate the hypotenuse of a right triangle
% and display the triangle as a patch object. 
c = sqrt(a^2 + b^2);
create_plot(a, b, color);
end

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');
end

Сгенерируйте MEX-функцию для pythagoras. Кроме того, сгенерируйте отчет генерации кода.

codegen -report pythagoras -args {1, 1, [.3 .3 .3]}

В отчете просмотрите код MATLAB для create_plot.

Отчет подсвечивает patch и axis функционируют функции, чтобы указать, что они обработаны как значение внешних параметров.

Запустите MEX-функцию.

pythagoras_mex(3, 4, [1.0 0.0 0.0]);

MATLAB отображает график прямоугольного треугольника как красный объект закрашенной фигуры.

Входные параметры

свернуть все

Имя функции MATLAB, которая объявляется как значение внешних параметров.

Пример: coder.extrinsic('patch')

Типы данных: char

Ограничения

  • Внешние вызовы функции имеют немного служебные, который может влиять на эффективность. Входные данные, который передается во внешнем вызове функции, должны быть предоставлены MATLAB, который требует создания копии данных. Если функция имеет какие-либо выходные данные, эти данные должны быть возвращены в среду MEX-функции, которая также требует копии.

  • Генератор кода не поддерживает использование coder.extrinsic вызывать функции, которые расположены в частной папке.

  • Генератор кода не поддерживает использование coder.extrinsic вызывать локальные функции.

Советы

  • Генератор кода автоматически обрабатывает много общих функций визуализации MATLAB, такой как plot, disp, и figure, как значение внешних параметров. Вы не должны явным образом объявлять их, когда значение внешних параметров функционирует при помощи coder.extrinsic.

  • Используйте coder.screener функция, чтобы обнаружить, какие функции необходимо объявить как значение внешних параметров. Эта функция запускает Инструмент Готовности Генерации кода, который экранирует код MATLAB на функции и функции, которые не поддерживаются для генерации кода.

Введенный в R2011a