Simulink time samples
12 ビュー (過去 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!