我在 Simulink 中有一个频率斜坡(sin wt,其中 w 随时间增加)并且想使用可变时间步长求解器。在模拟开始时,时间步长可能很大;最后,它们必须很小。
我尝试调整相对容差,但它似乎并没有真正产生有用的效果:最后的时间步长太长,正弦波每个周期只有 2-3 个点。
有没有办法直接或间接地将时间步长与正弦波分辨率联系起来(例如,在模拟中添加块以某种方式导致时间步长随着频率的增加而减小)?
据我所知,没有办法将这两者联系起来,因为没有一种机制可以从模型中控制求解器。我猜你尝试过僵硬和非僵硬的求解器?即使您的问题可能不僵硬,但僵硬的求解器可能会更好。每当我需要这类数据时,我都会使用采样时间非常短的固定步长求解器,但你可以让它更友好一点。我会尝试以下方法:
使用sim
命令设置仿真停止时间。
simOut = sim('model', 'TimeEnd',10000);
您可以设置一个改变正弦波的模型,如下所示:
您可以在每次模拟后更改logspace
边界,这样您就会有一个循环,例如:
模拟模型收集 tout、yout 等数据改变块离散部分的采样时间,只需使用单个变量。
我想你明白了,如果不告诉我!
!