coder.extrinsic

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

Описание

пример

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Функция 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, таких как plotdisp, и figure, как значение внешних параметров. Вы не должны явным образом объявлять их, когда значение внешних параметров функционирует при помощи coder.extrinsic.

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

Введенный в R2011a