I needed a simple model which could change the parameter of a block (say Gain block) with every time step – without using S-functions. There are numerous ways to do this. After trying out a couple of things, I came up with a simple model which demonstrates this.
Open the “updating_sim” model, and run the simulation. Open the scope and notice how the input Sine wave is multiplied by an increasing Gain amount at each time step (0.2s). The final value of Gain is 51 (since in 10s there will by 51 time steps).
Here I have used the "add_exec_event_listener" within my StartFcn model callback, which triggers a listener function called "update_param" whenever the event "PostOutputs" is hit for the block "updating_sim/Gain". Also note that the Gain value is reset to '0' for each simulation run using the InitFcn callback.
Nishaat Vasi (2023). Tuning block parameters at every time step in a simulation (https://www.mathworks.com/matlabcentral/fileexchange/24935-tuning-block-parameters-at-every-time-step-in-a-simulation), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!