exponenta event banner

coder.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. Также используется для работы в режимах Simulink Coder™ и Rapid Accelerator.
'HDL'Создание цели ЛПВП
'Custom'Создание пользовательского целевого объекта

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

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

Представлен в R2011a