How do I modify variables in the model workspace from a Simulink block?

109 views (last 30 days)
My Simulink block diagram has many gains whose values are variables stored in the Model Workspace.
I need to modify these gains dynamically using blocks in Simulink i.e. when a triggered subsystem is run, many of these gains have to change to new values specified by some Simulink block. I want these values to persist even after I terminate the simulation.
If this is possible, what block can do this?

Answers (1)

Swarooph on 3 Aug 2016
You can manipulate model workspace variables using MATLAB commands on a Simulink.Workspace variable. Refer to the following documentation to see how to make that happen in your particular case:
As to WHERE you would put these commands, it depends on your scenario.
  1. Do these variables change only at the end of the simulation so that it can be used for the next time you start a simulation? Then you can put it in the StopFcn callback (Documentation here).
  2. If the variables change EVERY time step during the simulation, try putting it in a MATLAB function block since this would execute every time step (Documentation here).
Jeeven Hugh
Jeeven Hugh on 8 Aug 2016
Edited: Jeeven Hugh on 8 Aug 2016
I saved my coefficients to a .mat file, and I am able to import them into Simulink; however, I still cannot change the variables in the Simulink ModelWorkspace.
How do I change the variables in the Simulink ModelWorkspace and still be able to generate C code from my Simulink block diagram?
I tried using the assignin method, but that does not support code generation.

Sign in to comment.


Find more on Programmatic Model Editing 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!