set simulink time step

329 次查看(过去 30 天)
I want to simulate a dynamics system 'mdl' using sim('mdl',parameters), and I want to get the simulation output at some specific time points, instead of time points determined by the ode solver. Is there any way that I can specify the time step of the simulink ode solver?
Like when using ode45, I can use ode45(odefun,tspan,y0) with tspan=0:0.1:1, can I still get simulation output at time points 0:0.1:1 with simulink?

采纳的回答

Kaustubha Govind
Kaustubha Govind 2011-7-11
编辑:John Kelly 2014-5-27
For variable-step solvers, you can do this by setting the Output options parameter on the Import/Export Pane of the Configuration Parameters window to either 'Produce additional output' or 'Produce specified output only' and entering the time array in Output times.
  3 个评论
Hongkai Dai
Hongkai Dai 2011-7-11
Thanks for your help! Do you know how to set the output options to "Produce specified output only" through command line?
Hongkai Dai
Hongkai Dai 2011-7-11
Thanks, I have found out, I can specify option.OutputOption, and then pass sim('mdl',option)

请先登录,再进行评论。

更多回答(2 个)

Fangjun Jiang
Fangjun Jiang 2011-7-11
Yes, certainly you can! Why don't you try it and see the results.
Use the MATLAB supplied "f14" model as an example, you can specify a time vector with variable time step and then run simulation. open the model and make it to output the simulation time "tout" and "yout" at Simulation>Configuration Parameters...>Data Import/Export
t=[0:0.01:5,5.1:0.1:10]';
sim('f14',t);
all(t==tout)
ans =
1
>> size(tout)
ans =
551 1
>> size(yout)
ans =
551 2
  3 个评论
Kaustubha Govind
Kaustubha Govind 2011-7-11
I don't think that is possible with fixed-step solvers. However, if what you want is to only get output signal values at specified time-steps, you can choose the least common divisor of your desired steps as the solver fixed-step and then extract the desired points from the logged outputs.
Fangjun Jiang
Fangjun Jiang 2011-7-11
See my edited answer above. I added an example with time vector with variable time step.

请先登录,再进行评论。


Fangjun Jiang
Fangjun Jiang 2011-7-11
I guess a short answer to your question is YES. Since you already know how to use ode45(odefun,tspan,y0) with tspan=0:0.1:1, you can do the same with sim, sim('YouModelName',tspan) with tspan=0:0.1:1.
  1 个评论
Hongkai Dai
Hongkai Dai 2011-7-11
Thanks a lot for your kind help! But Mathworks says such syntax are obsolete: http://www.mathworks.com/help/toolbox/simulink/ug/f11-61836.html#bsoh2ls. Anyway, your solution helps me a lot! Thanks!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programmatic Model Editing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by