Initialization Function
Initialization function (InitFcn
) is a type of callback that is
executed or evaluated at the beginning of model compilation. You can use
InitFcn
in a model (model InitFcn
) or a block
(block InitFcn
).
Note
Variant controls can be defined only in model InitFcn
callback.
Model InitFcn
The model InitFcn
callback is used to initialize parameters and
environment settings that are specific to the model used.
Note
It is not recommended to use the model InitFcn
callback to
get the simulation status. If you simulate a model in
slbuild
, or SIL(software-in-the-loop), or Rapid
Accelerator mode, the model InitFcn
callback status may show
as 'stopped'
. The model InitFcn
callback
must be used only to initialize parameters and environment settings that are
specific to the model used.
Best practices for using Model InitFcn
Do use model
InitFcn
to initialize data required for the model. For example, to initialize:Variables used in model parameters
License checks for the required software
Do not use model
InitFcn
to modify models other than self. This also means that the blockInitFcn
of Model block must not modify the parameters (and structure) of the referenced model.Do not use model
InitFcn
in the top model to overwrite any variable used in the referenced model. For example, if top and the referenced models use the variable ‘k
’, the modelInitFcn
of the top model must not modify ‘k
’ of the referenced model. In such modeling patterns, it is recommended that you use different variable names. Alternatively, you can use data dictionary.Do not use simulation commands in model
InitFcn
. For example, using commands like,set_param(ModelName, 'SimulationCommand', 'start')
orset_param(ModelName, 'SimulationCommand', 'update')
in the modelInitFcn
are not recommended.Do not use model
InitFcn
function to edit the structure of the model likeadd_line
, ordelete_line
if the model is referenced from the top model.
If you use the InitFcn
callback for the model, edit-time
checking for missing variables in block parameters is disabled for the entire
model.
Variants with Model InitFcn
You can use model properties to define the callbacks for a model. For example,
PreLoadFcn
, PostLoadFcn
,
InitFcn
callbacks. Model properties are used to view the
model information, description, history, and callback functions. You can use the
Property Inspector to view and edit model version properties, description
history, and callback functions. For more information on Model properties, see
Manage Model Properties.
Consider a model with Variant Subsystem and Variant Source blocks. For example, Variant - InitFcn.
In this model, the model InitFcn
is used to initialize
parameters for the model.
Similarly, these parameters can also be defined in
PreLoadFcn
or PostLoadFcn
.
However, when the parameters are defined in InitFcn
callback and if MATLAB® workspace is cleared using the Clear
command,
the items in the workspace are cleared and they are re-created when you simulate
the model. The items cleared will not be recreated when parameters are defined
in PreLoadFcn
or PostLoadFcn
.
Block InitFcn
The block InitFcn
callback is used to initialize block specific
parameters and settings.
Best practices for using Block InitFcn
Do not use block
InitFcn
to modify the parameters (or variables) of blocks other than self.Do not use block
InitFcn
on a child block to modify the parameters of the parent subsystem block or other child blocks. However, you can use blockInitFcn
on a parent subsystem block to modify the parameters of the direct child blocks.Do not use block
InitFcn
to make structural changes like adding or deleting block (add_block
ordelete_block
).Do not use block
InitFcn
in the Model block to modify the parameters (and structure) of the referenced model.
If you use an InitFcn
callback for a block, edit-time
checking for missing variables in block parameters is disabled for that
block.