You can save state information for logged states for each simulation step during a simulation. That level of state information can be helpful for debugging.
Select the Configuration Parameters > Data Import/Export > States check box.
In the States edit box, you can specify a different variable
for the state information, if you do not want to use the default xout
variable.
Also in the Data Import/Export pane, set the
Format parameter to Dataset
,
Structure
, or Structure with
time
, unless you use array format for compatibility with a legacy
model.
Dataset
format does not support:
Logging states information inside a function-call subsystem
Rapid accelerator simulation mode
Code generation
Click Apply.
Simulate the model.
To save just the logged states (the continuous and discrete states of blocks):
Select the Configuration Parameters > Data Import/Export > Final states check box.
In the Final states edit box, you can specify a different
variable for the state information, if you do not want to use the default
xFinal
variable.
Clear the Save final operating point parameter.
Set the Format parameter to Dataset
,
Structure
, or Structure with
time
.
Click Apply.
Simulate the model.
If you enable the Configuration Parameters > Data Import/Export > Final states or States parameters, Simulink® saves the state information in the format that you specify with the
Format parameter. The default variable for Final
state information is xFinal
, and the variable for state
information for States information is xout
.
If a model has no states saved, then xFinal
and
xout
are empty variables. To determine whether a model has states
saved, use the isempty(xout)
command.
For example, suppose that you saved final state information in
Dataset
format, and use the default
xFinal
variable for the saved state information.
xFinal
xFinal = Simulink.SimulationData.Dataset 'xFinal' with 2 elements Name BlockPath ______ _________ 1 [1x1 State] CSTATE vdp/x1 2 [1x1 State] DSTATE vdp/x2 - Use braces { } to access, modify, or add elements using index.
Examine the first element of the state data set.
xFinal{1}
ans = Simulink.SimulationData.State Package: Simulink.SimulationData Properties: Name: 'CSTATE' BlockPath: [1x1 Simulink.SimulationData.BlockPath] Label: CSTATE Values: [1x1 timeseries]
For example, suppose that you saved final state information in a structure with time
format, and use the default xFinal
variable for the saved state
information.
To find the simulation time and number of states in the vdp
model,
enter the xFinal
variable.
xFinal
xFinal = time: 20 signals: [1x2 struct]
In this case, the simulation time is 20 and there are two states. To examine the first state, use this command.
xFinal.signals(1)
ans = values: 2.0108 dimensions: 1 label: 'CSTATE' blockName: 'vdp/x1' stateName: '' inReferencedModel: 0
The values
and blockName
fields of the first
state structure show that the final value for the output signal of the x1 block is
2.018.
Note
If you write a script to analyze state information, use a combination of
label
and blockName
values to identify a
specific state uniquely. Do not rely on the order of the states.
To save complete state information, save the ModelOperatingPoint
object for a simulation.
Select the Configuration Parameters > Data Import/Export > Final states check box.
Also in the Data Import/Export pane, select the Save final operating point parameter.
In the edit box next to the Save final operating point
parameter, enter a variable name for the ModelOperatingPoint
object
and click Apply.
Simulate the model.
For more information about using the operating point, see Save and Restore Simulation Operating Point.