概述
项目需求,制作滤波器,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)有关,滤波阶数越大滤波效果越好,同时计算量也会变大。
最后
以上就是凶狠小土豆为你收集整理的Matlab Simulink设计滤波器的全部内容,希望文章能够帮你解决Matlab Simulink设计滤波器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复