Contenu principal

coder.target

Déterminer si la cible de la génération de code est celle spécifiée

Description

tf = coder.target(target) renvoie la valeur « true » (1) si la cible de la génération de code est bien target. Sinon, il renvoie la valeur « false » (0).

Si vous générez du code pour des classes MATLAB®, MATLAB calcule leurs valeurs initiales au moment de leur chargement avant la génération du code. Si vous utilisez coder.target dans l’initialisation des propriétés des classes MATLAB, coder.target('MATLAB') renvoie « true ».

exemple

Exemples

réduire tout

Paramétrez une fonction MATLAB pour qu’elle fonctionne dans MATLAB ou dans le code généré. Quand la fonction s’exécute dans MATLAB, elle appelle la fonction MATLAB myabsval. En revanche, le code généré appelle une fonction de bibliothèque C myabsval.

Écrivez une fonction MATLAB myabsval.

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

Générez une bibliothèque C statique pour myabsval en utilisant l’option -args pour spécifier la taille, le type et la complexité du paramètre en entrée.

codegen -config:lib myabsval -args {0.0}
La fonction codegen crée le fichier de bibliothèque myabsval.lib et le fichier d’en-tête myabsval.h dans le dossier \codegen\lib\myabsval. (L’extension du fichier de bibliothèque peut varier selon la plateforme.) Elle génère les fonctions myabsval_initialize et myabsval_terminate dans ce même dossier.

Écrivez une fonction MATLAB pour appeler la fonction de bibliothèque C générée avec 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

Générez la fonction MEX callmyabsval_mex. Spécifiez le fichier de bibliothèque généré à la ligne de commande.

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

Au lieu de spécifier la bibliothèque à la ligne de commande, vous pouvez utiliser coder.updateBuildInfo pour la spécifier dans la fonction. Utilisez cette option pour préconfigurer la compilation. Ajoutez la ligne suivante au bloc else :

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

Exécutez la fonction MEX callmyabsval_mex qui appelle la fonction de bibliothèque myabsval.

callmyabsval_mex(-2.75)
ans =

    2.7500

Appelez la fonction MATLAB callmyabsval.

callmyabsval(-2.75)
ans =

    2.7500
La fonction callmyabsval a le comportement souhaité pour l’exécution dans MATLAB et dans la génération de code.

Arguments d'entrée

réduire tout

Cible de la génération de code, spécifiée en tant que vecteur de caractères ou string scalar. Spécifiez l’une des cibles suivantes.

'MATLAB'Exécution dans MATLAB (aucune génération de code)

'C', 'C++', 'CUDA', 'HLS', 'SystemVerilog', 'Verilog', 'VHDL'

Langages cibles supportés pour la génération de code

'MEX'Génération d’une fonction MEX
'Sfun'Simulation d’un modèle Simulink®. Également utilisée pour l’exécution en mode Accelerator.
'Rtw'Génération d’une cible LIB, DLL ou EXE. Également utilisée pour l’exécution dans Simulink Coder™ et en mode Rapid Accelerator.
'HDL'Génération d’une cible HDL
'Custom'Génération d’une cible personnalisée

Exemple : tf = coder.target('MATLAB')

Exemple : tf = coder.target("MATLAB")

Remarque

En cas de génération de code CUDA ou High-Level Synthesis (HLS), coder.target('C++') a toujours la valeur true.

Capacités étendues

développer tout

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Génération de code GPU
Générez du code CUDA® pour les GPU NVIDIA® avec GPU Coder™.

Historique des versions

Introduit dans R2011a