simBiology exported model simulation output not in the same order as `InitialValues`
Show older comments
Hello,
I'm using a SimBiology exported model and I need to get the last value of a simulation and use it as initial condition for a following simulation (with different parameters, or dosing information), here is an example of what I need to do:
[t, y, names] = simulate(exported_model);
exported_model.InitialValues = y;
[t, y, names] = simulate(exported_model);
The problem is in the second line of the code as, surprinsingly, the order of the variables in y is not the same as the order in InitialValues. Currently, I'm performing a search for the appropriate index in names and using `exported_model.getIndex` to update each element of InitialValues. But this approach is suboptimal, it takes more than 1min to go over the entire array of initial conditions.
Is there any way to ensure that the output of model simulations come in the correct order? Or what would be the optimal approach here?
Thank you
1 Comment
Valentina Vasic
on 2 Feb 2023
Hallo Paulo,
I have never tried it, I usually use your method, but I never needed to do double simulation. Maybe this can give you a hand. You have to go to the Examples.

An easier and faster method I don't think there is, but here is some advice.
Best,
Valentina
Accepted Answer
More Answers (1)
Fangjun Jiang
on 1 Feb 2023
Edited: Fangjun Jiang
on 1 Feb 2023
0 votes
For a Simulink simulation, there are Inputs, Outputs and States. Usually, only States need initial values.
From "exported_model.InitialValues = y", it seems that you are assigning the Outputs of last simulation to the initial States of the next simulation. That is the problem. In general, Outputs will not be the same as the States, although they could be exactly the same.
There are ways to save the values of States and utilize it for the next simulation. See "States" and "Final states" in this doc.
web(fullfile(docroot, 'simulink/gui/data-import-export-pane.html'))
web(fullfile(docroot, 'simulink/ug/state-information.html'))
web(fullfile(docroot, 'simulink/ug/saving-and-restoring-simulation-operating-point.html'))
3 Comments
Paulo
on 1 Feb 2023
Fangjun Jiang
on 1 Feb 2023
Based on the doc link below, it seems "names" in your code is the column labels of "y". I wonder if there is a column label for model.InitialValues.
If there is and the labels match but in a different order, then you could use ismember() to shuffle them to match.
https://www.mathworks.com/help/simbio/ref/simbiology.export.model.simulate.html
Paulo
on 1 Feb 2023
Communities
More Answers in the SimBiology Community
Categories
Find more on Scan Parameter Ranges in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!