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