Matlab:如何在Simulink中对tf系统应用低通滤波器以实现更快的评估

3

我有一个机械振动系统,由一个 n x n 矩阵和传递函数 tf( ... ) 定义。

W = minreal( [  tf( ... ) ... tf(...) ; ... ; tf( ... ) ... tf(...)  ];

在下面的图中,您可以看到一些选定的频率响应。它显示了高频不规则性。 振荡系统的波德图 当我将这个系统与其他高阶系统结合在Simulink中时,所需的步长必须非常低,否则我的系统就不稳定。然后模拟时间非常长,这使得验证我的模型的一般功能变得不可能。
因此,我想在我的传输矩阵上应用低通滤波器,以便我可以使用更大的步骤进行更快的模拟时间。是否有一种方法可以在我的matlab代码或Simulink中实现这一点?
最后,我想根据我拥有多少时间和需要的精度来调整阈值频率。
我已经对适当的求解器进行了一些研究,但没有成功。任何关于求解器的建议也将帮助我。
这是我可用的工具箱的简陋列表。
Control System Toolbox                                Version 9.3        (R2012a)
Simulink Control Design                               Version 3.5        (R2012a)
System Identification Toolbox                         Version 8.0        (R2012a)

提前感谢您!

编辑:使用@am304的建议来说明。

从18阶到4阶降低系统的伯德图

从18阶到4阶降低系统的伯德图,我的情况不需要低通滤波器了。


1
听起来你正在使用固定步长求解器。我假设您的传递函数是连续的。我会使用可变步长求解器,因为这将允许仿真在可以时采用更大的时间步长。 'ode45' 是默认选项,但如果您的系统刚性,则使用 'ode15s' 或 'ode23t'。 - am304
我的系统很僵硬。我必须为ode15sode23t定义的公差对于一个稳定的系统来说太严格了,以至于减少模拟时间的效果不明显。此外,该模型必须与耦合的有限元分析交互,后者使用固定步长。因此,我尝试避免使用可变步长,但在最坏的情况下,我可以通过编辑接口来解决这个问题。 - Robert Seifert
其他建议:将您的传递函数矩阵转换为状态空间系统,并使用Simulink中的状态空间块,我认为这样会更有效(如果n很大,则肯定更易读)。此外,也许可以尝试降低系统的阶数(n)(有关更多详细信息,请参见http://www.mathworks.co.uk/help/control/model-simplification-1.html)。 - am304
@am304,您建议我降低系统的顺序对我非常有效,因为我的高频幅度非常小。因此,如果您将其发布为答案,我将不胜感激。但是,为了回答我的问题的一般情况,可能仍需要低通滤波器。我添加了一张图片,说明高频阻尼在任何情况下都可能不足。 - Robert Seifert
@am304 使用 balred 导致速度提升了35%,使用 balredbalreal(转换为状态空间)的组合最终使我加速了83%。非常感谢! - Robert Seifert
1个回答

1
如评论中所建议的那样,将您的传递函数矩阵转换为状态空间系统,并使用 Simulink 中的状态空间块,我怀疑它会更有效率(如果n很大,则肯定更易读)。
此外,也许可以尝试减少系统的阶数(n)(请参见文档中的模型简化,特别是查找balredbalreal)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接