Matlab Simulink设计滤波器

Matlab Simulink设计滤波器

项目需求,制作滤波器,MATLAB先仿真,以下为记录做了修改,不涉及公司项目信息。

一、Matlab设计滤波器

Matlab牛逼之处就不多说了,使用Matlab设计20-200hz带通滤波器过程如下:

1.首先设计一个滤波器:打开Matlab,在命令行窗口键入"fdatool"等待软件打开滤波器设计工具窗口。(或“filterDesigner”)

2.在滤波器设计窗口填写相关滤波器参数。

1.Specify order 为滤波阶数,滤波阶数越高滤波效果越好,运算量自然也会变大。

2.采样频率Fs,我需要滤的波时44.1khz的波,可通过的频率Fc1:20hz - Fc2:200hz,其它频率滤掉。

3.Group Delay 窗是滤波器滤波器群延迟,会导致滤波后的相位有差别,群延迟为滤波阶数的一半个采样点。

4.Magnitude Response窗口可以查看不同频率通过滤波器后信号衰减程度。

到此我们就设计好了滤波器。保留滤波器设计窗口,下面使用Simulink设计信号发生器并导入上步骤设计的滤波器,并将滤波前和滤波后的信号显示出来。设计生成采样率为44.1k的50hz正弦波和300hz正弦波,并将两个波形叠加,然后使用设计的滤波器滤波,查看是否可以将300hz的信号过滤掉。

二、Simulink可视化仿真

1.打开Simulink

2.Start界面创建一个模型

打开后设计页面如下,我需要我们自己选托选模块 3.打开Library Browser选择模块页,并选择Sine Wave

如下图,有很多种模块可选,将“Sine Wave”拖入打开的空白设计窗内即可(同理可以找到/搜索到其它模块)

4.双击模块填写设计参数,注意Frequency是弧度/秒,ω=2π/t=2πf。

5.导入自己设计的滤波器模块

还记得设计滤波器的窗口吗?选择设计滤波器Filter Desinger窗口,将设计好的滤波器导入到Simulink Model中

填写参数,并导出到Simulink

点击“Realize Model”后Simulink窗口会自动出现名为指定名称的模块。接下来就是添加300hz正弦发生器、add模块、和scope模块,左后连接起来。(这些都可以在现有模块中找到,其实滤波器也有,只不过我们要验证一些内容,要手动做并生成一个示波器模块)。

6.完整设计连接后如下图。

Add模块在Simlink/Math Operation/Add

Scope模块在Simlink/Commonly Used Block/

(或者直接在搜索框中搜索)

7.配置参数,点击窗口标签栏的小齿轮或者Simulation->Modle Configuration Paramters,填写参数。设计中运行0.2ms,即生成0.2ms的数据叠加并滤波。

8.双击scope窗口,弹出scope页面,并点击Run运行,查看50hz原始波形,300hz原始波形,叠加后的波形,滤波后的波形(View->Layout可以铺开窗口)。如下图,关注信号是否正确叠加,经过滤波器滤波后是否可以将300hz的信号滤掉,只剩下50hz的信号。

结果:

如图,50hz 300hz叠加后的波形经过滤波器后,300hz的部分被滤掉,只剩下50hz波形。滤波后相位不同步是因为滤波器群延迟问题。滤波是否干净和滤波器设计的滤波阶数(order 700)有关,滤波阶数越大滤波效果越好,同时计算量也会变大。

相关推荐