coder.target

Определите, задан ли целевой объект генерации кода

Синтаксис

Описание

пример

tf = coder.target(target) возвращает true (1), если цель генерации кода target. В противном случае возвращается false (0).

Если вы генерируете код для MATLAB® classes, MATLAB вычисляет начальные значения классов во время загрузки классов перед генерацией кода. Если вы используете coder.target в инициализации свойства класса MATLAB, coder.target('MATLAB') возвращает true.

Примеры

свернуть все

Параметризируйте функцию MATLAB так, чтобы она работала в MATLAB или в сгенерированном коде. Когда функция запускается в MATLAB, она вызывает функцию MATLAB myabsval. Сгенерированный код, однако, вызывает функцию библиотеки на C myabsval.

Написание функции MATLAB myabsval.

function y = myabsval(u)   
%#codegen
y = abs(u);

Сгенерируйте статическую библиотеку на C для myabsval, с использованием -args опция для задания размера, типа и сложности входного параметра.

codegen -config:lib myabsval -args {0.0}
codegen функция создает файл библиотеки myabsval.lib и заголовочный файл myabsval.h в папке \codegen\lib\myabsval. (Расширение файла библиотеки может измениться в зависимости от вашей платформы.) Он генерирует функции myabsval_initialize и myabsval_terminate в той же папке.

Написание функции MATLAB для вызова сгенерированной функции библиотеки C с помощью coder.ceval.

function y = callmyabsval(y)  
%#codegen
% Check the target. Do not use coder.ceval if callmyabsval is
% executing in MATLAB
if coder.target('MATLAB')
  % Executing in MATLAB, call function myabsval
  y = myabsval(y);
else
  % add the required include statements to generated function code
  coder.updateBuildInfo('addIncludePaths','$(START_DIR)\codegen\lib\myabsval');
  coder.cinclude('myabsval_initialize.h');
  coder.cinclude('myabsval.h');
  coder.cinclude('myabsval_terminate.h');

  % Executing in the generated code. 
  % Call the initialize function before calling the 
  % C function for the first time
  coder.ceval('myabsval_initialize');

  % Call the generated C library function myabsval
  y = coder.ceval('myabsval',y);
  
  % Call the terminate function after
  % calling the C function for the last time
  coder.ceval('myabsval_terminate');
end

Сгенерируйте MEX-функцию callmyabsval_mex. Предоставьте сгенерированный файл библиотеки в командной строке.

codegen -config:mex callmyabsval codegen\lib\myabsval\myabsval.lib -args {-2.75}

Вместо того, чтобы предоставлять библиотеку в командной строке, можно использовать, чтобы задать библиотеку в функции. Используйте эту опцию для предварительной настройки сборки. Добавьте эту линию к else блок:

coder.updateBuildInfo('addLinkObjects','myabsval.lib','$(START_DIR)\codegen\lib\myabsval',100,true,true);

Запуск MEX-функции callmyabsval_mex который вызывает функцию библиотеки myabsval.

callmyabsval_mex(-2.75)
ans =

    2.7500

Вызовите функцию MATLAB callmyabsval.

callmyabsval(-2.75)
ans =

    2.7500
The callmyabsval функция показывает желаемое поведение для выполнения в MATLAB и в генерации кода.

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

свернуть все

Цель генерации кода, заданная как вектор символов или строковый скаляр. Укажите одну из этих целей.

'MATLAB'Выполнение в MATLAB (не генерирует код)
'MEX'Генерация MEX-функции
'Sfun'Симуляция Simulink® модель. Также используется для работы в режиме Accelerator.
'Rtw'Генерация LIB, DLL или цели EXE. Также используется для работы в Simulink Coder™ и режиме Rapid Accelerator.
'HDL'Генерация HDL-целевого файла
'Custom'Создание пользовательского целевого объекта

Пример: tf = coder.target('MATLAB')

Пример: tf = coder.target("MATLAB")

Введенный в R2011a