Simulink time samples
11 views (last 30 days)
Show older comments
I am running my Simulink model multiple times from workspace. I change one parameter during the simulation (say at t=2 sec, I change the value of x parameter in Simulink model from 10 to 20). I have one s_function written in .m file to do that. The sampling time used in s-function is 0.001 sec.
I have set my input as sine wave with sampling time 0.001 sec.
Clearly, I have 50001 samples. It works for 2 runs (2 different parameters changed). But on the third go, it is giving me 50003 samples instead of 50001.
I checked the time samples and it turns out that it is having some problem around time when parameter is being changed.
For a normal (t=0:0.001:50) command, it is giving me following time samples (around 2 sec):
1.9990 2.0000 2.0010 2.0015 2.0020 2.0028 2.0030 2.0040 2.0050 2.0060 2.0070
But my Simulink model is returning following:
1.9990 2.0000 2.0010 2.0020 2.0030 2.0040 2.0050 2.0060 2.0070 2.0080 2.0090
I have set all the other blocks which have option for sampling time to -1 in the Simulink model.
0 Comments
Accepted Answer
Kaustubha Govind
on 3 Feb 2011
It is likely that the change of parameter is causing a zero-crossing to occur around t=2, thus forcing the solver to take smaller steps. You can either turn off zero-crossing detection, or, switch to a fixed-step solver if you prefer having a fixed number of time-steps (although that may compromise the accuracy of your data if your system has significant chatter).
2 Comments
Kaustubha Govind
on 3 Feb 2011
Variable-step solvers compute the next time-step depending on the model dynamics (even without zero-crossing detection), to achieve the given error tolerances. If having the exact number of time-steps is important to you, then the most definite way is to choose a fixed-step solver.
More Answers (1)
Rob Graessle
on 3 Feb 2011
Is there a reason that you couldn't use a fixed-step solver (with step size 0.001s) instead of a variable-step solver? That way you would be guaranteed to get 50001 samples on any simulation.
Aside from that, it isn't obviously clear why changing one parameter would add time steps to the simulation (I would have to examine the model further). You could use the Simulink Debugger to inspect the simulation execution around t=2 to see exactly what is going on.
See Also
Categories
Find more on General Applications in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!