我在Simulink中有一个频率斜坡(sin wt,其中w随时间增加),并希望使用可变时间步长求解器。在模拟开始时,时间步长可能很大;在模拟结束时,它们必须很小。
我试过调整相对容差,但似乎没有真正有用的效果:结束时的时间步长太长,每个周期的正弦波只有2-3个点。
有没有办法以某种方式直接或间接地将时间步长与正弦波分辨率联系起来(例如,在模拟中添加块,以某种方式使时间步长随着频率的增加而减少)?
发布于 2013-03-02 00:44:58
据我所知,没有办法将这两者联系起来,因为没有一种机制来控制模型中的求解器。我猜你试过硬式和非硬式求解器?即使你的问题可能不是硬性的,但硬性的求解器可能更好。每当我需要这样的数据时,我都会使用一个固定步长的求解器,样本时间非常小,但你可以让它更友好一些。我会尝试下面这样的方法:
使用sim命令设置模拟停止时间。
simOut = sim('model', 'TimeEnd',10000);您可以设置一个模型来更改正弦波,如下所示:

您可以在每次模拟后更改logspace边界,这样就会有一个如下所示的循环:
模拟模型收集tout,yout等数据改变区块离散部分的采样时间,只需使用一个变量。
我想你已经明白了,如果没有的话,请让我知道!
哈!
https://stackoverflow.com/questions/14877718
复制相似问题