coder.target

Определите, задана ли цель генерации кода цель

Синтаксис

tf = coder.target(target)

Описание

пример

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

Если вы генерируете код для классов MATLAB®, 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}

Вместо того, чтобы обеспечивать библиотеку в командной строке, можно использовать coder.updateBuildInfo, чтобы задать библиотеку в функции. Используйте эту опцию, чтобы предварительно сконфигурировать сборку. Добавьте эту строку к блоку 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
Функция callmyabsval показывает желаемое поведение для выполнения в MATLAB и в генерации кода.

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

свернуть все

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

MATLABВыполнение в MATLAB (не генерирующий код)
MEXГенерация MEX-функции
'Sfun'Моделирование модели Simulink®
'Rtw'Генерируя LIB, DLL или цель EXE
'HDL'Генерация цели HDL
'Custom'Генерация пользовательской цели

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

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

Введенный в R2011a

Была ли эта тема полезной?