Simulink time samples
조회 수: 11 (최근 30일)
이전 댓글 표시
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
채택된 답변
Kaustubha Govind
2011년 2월 3일
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
Kaustubha Govind
2011년 2월 3일
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.
추가 답변 (1개)
Rob Graessle
2011년 2월 3일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 General Applications에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!