The virtualized output ports optimization lets you store the signal
entering the root output port as a global variable. Clearing the MAT-file
logging option and setting the TLC variable
0, both defaults for
Embedded Coder®, eliminate code and data storage associated with root output ports.
Consider the model in the following block diagram. The signal
exportedGlobal storage class.
In the default case, the output of the Gain block is written to the signal storage
exportedSig. The code generator does not generate code or data
Out1 block, which has become a virtual block.
/* Gain Block: <Root>/Gain */ exportedSig = rtb_PulseGen * VirtOutPortLogOFF_P.Gain_Gain;
In cases where you enable MAT-file logging or set
FullRootOutputVector = 1, the generated code represents root output ports
as members of an external outputs vector.
The following code fragment was generated with MAT-file logging
enabled. The output port is represented as a member of the external outputs vector
VirtOutPortLogON_Y. The Gain block output value is copied to
exportedSig and to the external outputs vector.
/* Gain Block: <Root>/Gain */ exportedSig = rtb_PulseGen * VirtOutPortLogON_P.Gain_Gain; /* Outport Block: <Root>/Out1 */ VirtOutPortLogON_Y.Out1 = exportedSig;
Data maintenance in the external outputs vector can be significant for smaller models that perform benchmarks.
You can force root output ports to be stored in the external outputs vector (regardless of
the setting of MAT-file logging) by setting the TLC variable
1. Add the statement
%assign FullRootOutputVector = 1
to the Embedded Coder system target file. Alternatively, you can enter the assignment from the
MATLAB® command line using the
set_param command, the model parameter
TLCOptions, and the
-a. For more information, see Specify TLC for Code Generation and Configure TLC.
For more information on how to control signal storage in generated code, see How Generated Code Stores Internal Signal, State, and Parameter Data and C Code Generation Configuration for Model Interface Elements.