Simulink time samples
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Kaustubha Govind
le 3 Fév 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 commentaires
Kaustubha Govind
le 3 Fév 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.
Plus de réponses (1)
Rob Graessle
le 3 Fév 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.
Voir également
Catégories
En savoir plus sur General Applications dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!