The MathWorks receives many questions relating to Simulink state ordering, state initialization, and Simulink solver performance. Many times customers are not aware of existing capabilities that are available and will solve their current issues.
There are 3 MATLAB central submissions (all separate downloads!) that have been used with multiple customers to show current capabilities.
Example 1 : Explores how Simulink defines its states and what you can do once you know that definition.
Example 2 : Explores using the Simulink Debugger to extract information
from a simulink diagram or simulation run.
Example 3 : Explores how to leverage the 'Structure with Time' Simulink data format to alleviate ordering and index issues on inputs/outputs/states.
This script file will show the following:
1) Remove dependence on Simulink state ordering for Simulink state initialization or state output processing using existing Structure Format option which keys off of full state block path instead of array index.
2) Shows one can initialize only a subset of Simulink states, no need to define complete initial state vector. Uses initial value within Simulink model if not defined within Structure.
Although this example does not do the following explicitly, this Structure Format approach also allows for
? saving and setting continuous, discrete, differing datatype states all at the same time!
? Defining Root Level Input time histories! Defining processing scripts of Root Level Output time histories, or State time histories!
Dan Lluch (2020). Removing Simulink's State Order Dependency (Example 3) (https://www.mathworks.com/matlabcentral/fileexchange/4429-removing-simulink-s-state-order-dependency-example-3), MATLAB Central File Exchange. Retrieved .
updated ZIP file for R2010a
some robustness changes within MAKESTRUCTURE file to handle models with no continuous or discrete double states.