基于MATLAB的FIR滤波器的设计

2022/1/16 6:04:15

本文主要是介绍基于MATLAB的FIR滤波器的设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

------------恢复内容开始------------

FIR滤波器设计的整体流程图

本设计使用fir滤波器对语音信号进行滤波处理,本仿真设计使用matlab作为仿真平台,matlab自带的信号作为语音原始信号来进行滤波器的仿真,其流程图表示如下:

image

总设计流程图

首先要设计的是fir滤波器,根据fir滤波器的理论形式,fir滤波器(有限长度冲击响应)是全零点型的滤波器,其数学的实现形式如下:

\[y[n] = a_{0}x[n]+a_{1}[n-1]+...a_{m}x[n-m] \]

其中滤波器最重要的两个特性为线性相位特性和幅度特性。原始信号的频率特性曲线如图1.1 所示,通过进行三次样条插值处理,将语音信号的采样率提升到20Khz,进行采样后的频谱图如1.2所示。

image

图1.1:原始信号的频谱图

image

图1.2:提高采样到20khz频谱图

​ 观察图1.2后,可以发现信号的能量集中在低频部分,为了减少无用的高频分量,本设计设计了fir低通滤波将其滤除。本设计采样了等纹波来完成低通滤波的设计。设计工具使用MATLAB的滤波器工具FADTOOL,FAD可以根据使用者的参数进行滤波器的快速验证和设计。根据图1.2的频谱图,确定设计的低通滤波器的fp = 8khz,fs = 8.5khz。设计的滤波器的频谱图为图1.3所示,其阶数为71阶,单位圆的零极点分布如图1.4所示.

image

图1.3:低通滤波器的频谱图

image

图1.4:FIR滤波器的零极点分布图

语音信号通过低通滤波器后,其频谱响应如图1.5所示。

image

图1.5 通过低通信号语音信号频谱

可以明显看出信号大于8khz以上的频谱被过滤了。

过滤后使用希尔伯特滤波将语音信号的双边带信号变换为单边带信号,减少通信带宽是的使用。这里设计使用matlab的希尔伯特滤波\(\frac{1}{\pi t}\)过滤信号的频谱如图1.6所示,通过希尔伯特变化变成单边带频率如图1.7所示。

image

图1.6 语音信号双边谱

image

图1.7 语音信号单边谱

​ 由于信号需要进行发送,所有比如讲频率提高,将20khz的采样率转换到10M的采样率。一般使用分阶段的采样将采样率提高500倍。在每次的提高采样率相当于在频谱上进行延扩。为了保证频谱的形状,使用fir设置0.2和0.25的滤波器进行处理。图1.8为进行升采样5倍的频谱图。

image

图1.8 语音信号升采样5倍后的频谱图

所以通过截止频率为0.2的滤波进行过滤,滤波器的频率响应如图1.9所示。

image

图1.9 截止频率为0.2的低通滤波器的频谱图
图1.10为截止频率为0.25的低通滤波器的频谱图

![img](file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg)

图1.10截止频率为0.2的低通滤波器的频谱图

当通过对语音信号进行500倍的upsample 后,其频谱图如下图所示1.11所示。
image

图1.11:upsample后的语音波形的频谱

最后进行语音信号的频率搬移,使得信号的可以发送。频谱搬移后的语音信号频谱图如图1.12所示。
image

图1.12:语音信号通过频谱搬移后的频谱图形

设计语音信号通过AWGN信道,相当在语音信号的频谱上加上一个高斯白噪声。高斯白噪声的频谱如图1.12所示。
image

图1.12 高斯白噪声的频谱图

总结以上的过程,对语音信号进行采样增加到10M,以满足发送的条件,并使用高斯白噪声模拟过程中信道造成的信号噪声影响。这个时候,接收机要接收到原始的信号并且可以解调原始信号,必须有一个带通滤波器,将语音信号过滤出来,而抛弃无用的噪声信号。通过图1.11的频谱可以得到带通滤波器的带通为0.6-0.75,利用MATLAB的FAD工作选择最小纹波设计,得到带通滤波的归一化系数矩阵,其频率响应如图1.13所示。

image

图1.13:带通滤波器的频率响应图形

将接受的信号通过带通滤波后的语音频谱图如图1.14所示。

image

图1.14:语音信号通过带通滤波器的频率响应图形

​ 对接受到语音信号进行dowmsample(下边频处理),同样下变频500,过程和上变频相反。最后得到听到的语音信号的频谱为图1.15所示。

image

​ 通过matlab的sound函数听取原始信号和接受的信号,发现信号的语音基本一致,所以通过该方案进行语音信号的通信和滤波器的仿真是成功可行的。

------------恢复内容结束------------



这篇关于基于MATLAB的FIR滤波器的设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程