数字信号课程设计
—窗函数法FIR数字滤波器设计
学院:计算机科学学院
班级:2010级电子信息科学与技术02班
姓名:于翔 41009030212 周著斌 41009030211
陈波 41009030210 张龙飞 41009030213
陆源 41009030220 陆海涛 41009030209
日期:20130102
一.课程设计题目:窗函数法FIR数字滤波器设计
二.课程设计
:
1.设计一个30阶的FIR低通数字滤波器,其通带边界频率为0.2。选择参数:采样频率=1,采用矩形窗函数。
2.设计一个30阶的FIR高通数字滤波器,其通带边界频率为0.3。选择参数:采样频率=1,采用海明窗函数。
3.设计一个35阶的FIR带通数字滤波器,其通带下边界频率为0.2,通带上边界频率为0.35,选择参数:采样频率=1,β=4,采用凯塞窗函数。
4.设计一个40阶的FIR带阻数字滤波器,其通带下边界频率为0.l,通带上边界频率为0.25。选择参数:采样频率=1,采用布拉克曼函数。
在装有MATLAB的PC机利用MATLAB仿真软件系统结合窗函数法设计FIR滤波器
三.窗函数设计法思想:
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。fir数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
用窗函数设计滤波器首先要对滤波器提出性能指标。一般是给定一个理想的频率响应,使所设计的FIR滤波器的频率响应去逼近所要求的理想的滤波器的响应。窗函数法设计的任务在于寻找一个可实现(有限长单位脉冲响应)的传递函数。用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列。主要设计步骤为:
(1)通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。
从时域出发,截取有限长的一段冲击响应作为H(z)的系数,冲击响应长度N就是系统函数H(z)的阶数。只要N足够长,截取的方法合理,总能满足频域的要求。一般这种时域设计、频域检验的方法要反复几个回合才能成功。要设计一个线性相位的FIR数字滤波器,首先要求理想频率响应
。
是w的周期函数,周期为
,可以展开成傅氏级数:
=
(1-1)
其中
是与理想频响对应的理想单位抽样响应序列。但不能用来作为设计FIR DF用的h(n),因为
一般都是无限长、非因果的,物理上无法实现。为了设计出频响类似于理想频响的滤波器,可以考虑用h(n)来近似
。
窗函数的基本思想:先选取一个理想滤波器(它的单位抽样响应是非因果、无限长的),再截取(或加窗)它的单位抽样响应得到线性相位因果FIR滤波器。这种方法的重点是选择一个合适的窗函数和理想滤波器。
(2)由性能指标确定窗函数W(n)和窗口长度N。
设x(n)是一个长序列,w(n)是长度为N的窗函数,用w(n)截断x(n),得到N点序列xn(n),即
xn(n) = x(n) w(n) (1-2)
在频域上则有
(1-3)
(3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量。
(1-4)
由此可见,窗函数w(n)不仅仅会影响原信号x(n)在时域上的波形,而且也会影响到频域内的形状。
四.设计中所涉及到的窗函数简介:
1.矩形窗函数
(1) 矩形窗(Rectangular Window)函数的时域形式可以表示为:
它的频域特性为
(2)调用方式
w = boxcar (n):输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。
从功能上讲,该函数又等价于w = ones(n,1)。
(3)程序清单
WC=0.2*pi;N=21; %给出指标和长度N
hd=ideallp(WC,N); %求出给定指标下的理想脉冲响应
Wd1=boxcar(N)';h1=hd.*Wd1; %用矩形窗设计
[H1,W]=freqz(h1,1); %求h1频率特性
subplot(1,2,1);
plot(W,abs(H1)); %画出幅频特性绝对值
legend('Rectanle'); %标注
subplot(1,2,2);
plot(W,20*log10(abs(H1)); %画对数特性
legend('Rectanle'); %标注
2.哈明窗函数
(1)哈明窗函数的时域形式可以表示为
它的频域特性为
其中,
为矩形窗函数的幅度频率特性函数。
哈明窗函数的最大旁瓣值比主瓣值低41dB,但它和汉宁窗函数的主瓣宽度是一样大的。
(2)调用方式
(1) w = hamming(n):输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。
(2) w = hamming(n,sflag):参数sflag用来控制窗函数首尾的两个元素值;其取值为symmetric或periodic;默认值为symmetric。
(3)程序清单
WC=0.3*pi;N=21; %给出指标和长度N
hd=ideallp(WC,N); %求出给定指标下的理想脉冲响应
Wd1=hamming(N)';h1=hd.*Wd1; %用哈明窗设计
[H1,W]=freqz(h1,1); %求h1频率特性
subplot(1,2,1);
plot(W,abs(H1)); %画出幅频特性绝对值
legend('Hamming'); %标注
subplot(1,2,2);
plot(W,20*log10(abs(H1)); %画对数特性
legend('Hamming'); %标注
3.凯塞窗函数
(1)上面所讨论的几种窗函数,在获得旁瓣抑制的同时却增加了主瓣的宽度。而凯塞窗定义了一组可调的窗函数,它是由零阶贝塞尔函数构成的,其主瓣能量和旁瓣能量的比例是近乎最大的。而且,这种窗函数可以在主瓣宽度和旁瓣高度之间自由选择它们的比重,使用户的设计变得非常灵活。
凯塞窗函数的时域形式可表示为
其中,
是第1类变形零阶贝塞尔函数,
是窗函数的形状参数,由下式确定:
其中,
为凯塞窗函数的主瓣值和旁瓣值之间的差值(dB)。改变β的取值,可以对主瓣宽度和旁瓣衰减进行自由选择。β的值越大,窗函数频谱的旁瓣值就越小,而其主瓣宽度就越宽。
图5-7 不同beta系数凯塞窗的比较结果图
(2) 调用方式
w = kaiser(n,beta):输入参数n是窗函数的长度;输入参数beta用于控制旁瓣的高度;输出参数w是由窗函数的值组成的n阶向量。
n一定时,beta越大,其频谱的旁瓣就越小,但主瓣宽度相应的增加;当beta一定时,n发生变化,其旁瓣高度不会发生变化。
(3)程序清单
wp=0.35;ws=0.2;WC=(wp+ws)/(pi*2);N=21; %给出指标和长度N
hd=ideallp(WC,N); %求出给定指标下的理想脉冲响应
Wd1=kaiser(N)';h1=hd.*Wd1; %用凯塞窗设计
[H1,W]=freqz(h1,1); %求h1频率特性
subplot(1,2,1);
plot(W,abs(H1)); %画出幅频特性绝对值
legend('kaiser'); %标注
subplot(1,2,2);
plot(W,20*log10(abs(H1)); %画对数特性
legend('kaiser'); %标注
4.布拉克曼窗函数
(1)布拉克曼窗函数的时域形式可以表示为
它的频域特性为
其中,
为矩形窗函数的幅度频率特性函数。
布拉克曼窗函数的最大旁瓣值比主瓣值低57dB,但是主瓣宽度是矩形窗函数的主瓣宽度的3倍,为12π/N。
(2) 调用方式
w = blackman (n):输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。
w = blackman (n,sflag):参数sflag用来控制窗函数首尾的两个元素值;其取值为symmetric或periodic;默认值为symmetric。
(3)程序清单
wp=0.1;ws=0.25;WC=(wp+ws)/(pi*2);N=21; %给出指标和长度N
hd=ideallp(WC,N); %求出给定指标下的理想脉冲响应
Wd1=blackman(N)';h1=hd.*Wd1; %用布拉克曼窗窗设计