精炼模拟的输出
今天我很高兴和大家分享一篇博客,家伙卷轴。享受吧!
我经常使用Simulin金宝appk对简单系统的动态进行建模。在大多数情况下,Simulink默认设金宝app置在精度和仿真速度之间提供了很好的折衷。这些设置通常允许我观察我感兴趣的信号。
我最近遇到了需要更改默认Simulink设置以观察预期信号的情况。金宝app
让我们从一个非常简单的例子开始:模拟100Hz振幅为1的正弦波10秒
使用默认的Simulink设置,在金宝app范围上观察到的正弦波如下:
然后大喊“Simulink坏了!”金宝app,让我们看看在播放该模型时MATLAB命令提示符显示的警告。
第一个警告提到所选求解器“ode45”被可变步长离散求解器取代。第二个警告说Simulink将使用默认步长0.2秒。金宝app
这两个警告的组合导致Simulink在时间[0 0.2 0.4…9.8 10]处评估正弦波,其值始金宝app终为零。为了正确地观察正弦波,一个非常有用的选项是细化输出:
通过为细化系数设置一个适当的值,就可以观察到预期的正弦波。这是精细系数为250的结果:
现在你可能会想,“有趣,但我从来没有创建只有正弦波的模型。”我同意,所以让我们看一个更现实的仿真和建模由离散控制器指挥的伺服电机。我们的S金宝appimulink模型如下所示:
使用默认设置,Scope块显示的位置、速度和加速度如下:
细心的眼睛可能会注意到,0.2秒后,加速度信号似乎在14附近保持不变,而速度信号也在1附近保持不变。由于输入斜坡的斜率为1,我们可以得出结论,Simulink可以准确地计算速度值,但为什么加速度不是人们所期望的零呢?金宝app
也许我们应该改进输出。将细化因子设置为4可以及时提供更好的分辨率,并显示系统的真实行为。
在这种情况下,它表明伺服电机加速度信号在提交到来自计算机的命令的100Hz离散步骤时振荡。
关于细化因子,我们还应该知道什么?
- 为了获得更平滑的输出和更好的时间分辨率,改变细化因子比减小步长要快得多。
- 当细化因子改变时,求解器通过在这些点上计算连续扩展公式来生成额外的点。
- 细化因子适用于变步长求解器,在使用ode45时最有用。
- 通常,值为4会产生更平滑的结果。
现在轮到你了
你用过精炼因子吗?留下一个这里的评论并分享你的经验。
- 类别:
- 数字组成,
- 常微分方程,
- 金宝app仿真软件提示
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。