摘要:FIR数字滤波器是数字信号处理中得重要组成部分。本文主要介绍了利用MATLAB软件采用窗函数法设计符合指标的FIR数字滤波器。该方法也是窗函数法设计FIR数字滤波器的一般方法。
一、设计目的
MATLAB是一款功能强大的软件,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,代表了当今国际科学计算软件的先进水平。用MATLAB设计FIR数字滤波器的过程就是其一大应用,在设计过程中我们可以锻炼自己的编程水平及MATLAB的应用水平,同时还能巩固课堂的学习到的理论知识。
二、设计任务
利用窗函数法设计一个线性相位FIR低通滤波器,要求通带临界频率fp=2KHz,阻带临界频率fs=4KHz,通带内的最大衰减Rp=1dB,阻带内的最小衰减Rs=50db,采样频率Fs=22KHz。
三、窗函数设计滤波器原理
窗函数设计滤波器的主要过程是:
(1)确定技术指标。在进行一个滤波器的设计之前,首先必须根据实际工程需要确定滤波器的技术指标。给出的指标内容一般是通带截止频率
、阻带截止频率
、通带最大衰减
、阻带最小衰减
。运用线性相位响应的指标进行滤波器设计具有如下优点:①只包含实数算法;②不存在延时失真;
长度为N的滤波器(阶数为N-1),计算量为N/2的数量级。
(2)逐渐逼近。确定技术指标以后,就可以建立一个目标的数字滤波器模型。一般是先考虑理想滤波器,然后根据实际的设计进行逼近理想结果。
其窗函数设计FIR滤波器的主要思想就是构造一个实际的滤波器频率响应函数
来逼近理想的频率响应
,通过要求所给出的指标来确定所需要的窗函数的类型,同时可通过计算获得窗口的长度,通过窗口函数对理想频率响应函数进行截短,获得实际的频率响应函数。即:
h(n)=w(n)
其中:
=
但是在截短的过程中应该注意,所选窗的长度不一定总是符合要求,一般需要经过多次的试验才能得到满意的结果。
各种窗函数的性能表格如下:
名称 | 主 瓣 带 宽 | 过 渡 带 宽 | 最 小 阻 带 衰 减 |
Boxcar (矩形) | 4 /M | 1.8 /M | 21dB |
Bartlet (巴特利特) | 8 /M | 4.2 /M | 25dB |
Hanning (汉宁) | 8 /M | 6.2 /M | 44dB |
Hamming(哈明) | 8 /M | 6.6 /M | 51dB |
Blackman(布莱克曼) | 12 /M | 11 /M | 74dB |
四、设计步骤
用窗函数法设计FIR数字滤波器的步骤如下:
1.根据对阻带衰减及过渡带的指标要求选择窗函数的类型,并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的窗函数。然后根据过渡带宽度估算窗口长度。
2.构造希望逼近的频率响应函数。
3.按照公式
计算
。
4.加窗得到设计结果。
。
五、MATLAB实现过程
clear;close all;clc;
fp=2000;fs=4000;Ap=1;As=50;Fs=22000;
ws=2*fs/Fs;wp=2*fp/Fs;
Bt=ws-wp;
N0=ceil(6.6/Bt);
N=N0+mod(N0,2)
wc=(ws+wp)/2
n=0:N-1;a=(N-1)/2;
hdn=sin(wc*pi*((n-a)+eps))./(pi*((n-a)+eps));
hn=fir1(N-1,wc,hamming(N))
freqz(hn,1,512,Fs);grid on;
N =
38
wc =
0.2727
hn = [
-0.0002 0.0010 0.0020 0.0019 -0.0006 -0.0047
-0.0073 -0.0042 0.0056 0.0167 0.0188 0.0041
-0.0239 -0.0470 -0.0403 0.0119 0.1025 0.2002
0.2635 0.2635 0.2002 0.1025 0.0119 -0.0403
-0.0470 -0.0239 0.0041 0.0188 0.0167 0.0056
-0.0042 -0.0073 -0.0047 -0.0006 0.0019 0.0020
0.0010 -0.0002 ]
图像如下: