Matlab:如何在tf系统上应用低通滤波器,以便在simulink中进行更快的评估

Matlab:如何在tf系统上应用低通滤波器,以便在simulink中进行更快的评估,matlab,filtering,simulink,solver,frequency-analysis,Matlab,Filtering,Simulink,Solver,Frequency Analysis,我有一个机械振动系统,由传递函数为tf(…)的矩阵定义 W = minreal( [ tf( ... ) ... tf(...) ; ... ; tf( ... ) ... tf(...) ]; 在下图中,您可以看到一些选定的频率响应。它在高频下显示各种不规则 当我在Simulink中将此系统与其他高阶系统结合时,所需的步长必须非常低,否则我的系统不稳定。然后,模拟时间非常长,这使得无法验证我的模型的一般功能性 出于这个原因,我想在我的fransfer矩阵上应用一个低通滤波器,这样我就可

我有一个机械振动系统,由传递函数为tf(…)的矩阵定义

W = minreal( [  tf( ... ) ... tf(...) ; ... ; tf( ... ) ... tf(...)  ];
在下图中,您可以看到一些选定的频率响应。它在高频下显示各种不规则

当我在Simulink中将此系统与其他高阶系统结合时,所需的步长必须非常低,否则我的系统不稳定。然后,模拟时间非常长,这使得无法验证我的模型的一般功能性

出于这个原因,我想在我的fransfer矩阵上应用一个低通滤波器,这样我就可以使用更大的步长来加快模拟时间。有没有办法在我的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阶的简化系统的Bode图,在我的情况下不再需要低通。

如评论中所建议的,将传递函数矩阵转换为状态空间系统,并使用Simulink中的,我怀疑它会更有效(如果
n
较大,则肯定更可读)


另外,可以考虑降低系统的阶数(
n
)(有关更多详细信息,请参阅文档中的-尤其是查找和)

听起来您使用的是固定步长解算器。我假设你的传递函数是连续的。我将使用可变步长解算器,因为这将允许模拟在可能的情况下采用更大的时间步长
ode45
是默认设置,但如果您的系统不灵活,请使用
ode15s
ode23t
。我的系统不灵活。我必须为稳定系统的
ode15s
ode23t
定义的公差非常严格,以减少我的模拟时间。此外,模型必须与耦合有限元分析相互作用,该分析以固定步骤进行。因此,我尝试使用可变步长,但在最坏的情况下,我可以通过编辑界面来解决此问题。其他建议:将传递函数矩阵转换为状态空间系统,并使用Simulink中的状态空间块,我怀疑这将更有效(如果
n
较大,则可读性肯定会更高)。此外,也许可以考虑降低系统的阶数(
n
)(有关更多详细信息,请参阅)。@am304您降低系统阶数的建议似乎对我非常有效,因为我的高频震级非常小。所以,如果你能把它作为一个答案发布,我将不胜感激。但是,为了回答我问题的一般情况,仍然需要一个低通滤波器。我添加了一张图片,说明高频阻尼在任何情况下都可能不够。@am304使用
balred
导致35%的加速
balred
balreal
(状态空间转换)的组合最终使我的速度提高了83%。非常感谢你!