coder.target - Determine if code generation target is specified target - MATLAB (original) (raw)
Determine if code generation target is specified target
Syntax
Description
`tf` = coder.target([target](#bt1z02r-1-target))
returns true (1) if the code generation target is target
. Otherwise, it returns false (0).
If you generate code for MATLAB® classes, MATLAB computes class initial values at class loading time before code generation. If you use coder.target
in MATLAB class property initialization, coder.target('MATLAB')
returns true.
Examples
Use coder.target
to Parameterize a MATLAB Function
Parameterize a MATLAB function so that it works in MATLAB or in generated code. When the function runs in MATLAB, it calls the MATLAB function myabsval
. The generated code, however, calls a C library function myabsval
.
Write a MATLAB functionmyabsval
.
function y = myabsval(u)
%#codegen
y = abs(u);
Generate a C static library for myabsval
, using the-args
option to specify the size, type, and complexity of the input parameter.
codegen -config:lib myabsval -args {0.0}
Thecodegen
function creates the library filemyabsval.lib
and header file myabsval.h
in the folder \codegen\lib\myabsval
. (The library file extension can change depending on your platform.) It generates the functionsmyabsval_initialize
and myabsval_terminate
in the same folder.
Write a MATLAB function to call the generated C library function usingcoder.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
Generate the MEX function callmyabsval_mex
. Provide the generated library file at the command line.
codegen -config:mex callmyabsval codegen\lib\myabsval\myabsval.lib -args {-2.75}
Rather than providing the library at the command line, you can use coder.updateBuildInfo to specify the library within the function. Use this option to preconfigure the build. Add this line to the else
block:
coder.updateBuildInfo('addLinkObjects','myabsval.lib','$(START_DIR)\codegen\lib\myabsval',100,true,true);
Run the MEX function callmyabsval_mex
which calls the library functionmyabsval
.
Call the MATLAB functioncallmyabsval
.
Thecallmyabsval
function exhibits the desired behavior for execution in MATLAB and in code generation.
Input Arguments
target
— code generation target
'MATLAB'
| 'C'
| 'C++'
| 'CUDA'
| 'HLS'
| 'SystemVerilog'
| 'Verilog'
| 'VHDL'
| 'MEX'
| 'Sfun'
| 'Rtw'
| 'HDL '
| 'Custom'
Code generation target, specified as a character vector or a string scalar. Specify one of these targets.
'MATLAB' | Running in MATLAB (not generating code) |
---|---|
'C', 'C++','CUDA', 'HLS','SystemVerilog', 'Verilog','VHDL' | Supported target languages for code generation |
'MEX' | Generating a MEX function |
'Sfun' | Simulating a Simulink® model. Also used for running in Accelerator mode. |
'Rtw' | Generating a LIB, DLL, or EXE target. Also used for running inSimulink Coder™ and Rapid Accelerator mode. |
'HDL' | Generating an HDL target |
'Custom' | Generating a custom target |
Example: tf = coder.target('MATLAB')
Example: tf = coder.target("MATLAB")
Note
In case of CUDA
or High-Level Synthesis (HLS)
code generation, coder.target('C++')
is alwaystrue
.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.
Version History
Introduced in R2011a