课程设计论文
题 目
基于 kaiser 窗的 FIR
__数字滤波器的设计
院 (系)
物理学院
专
年
业
级
学生姓名
学
号
指导教师
电子信息科学与技术
2010 级
张 轩
2010210843
张国平
二○一三 年 六 月
目 录
内容摘要............................................................................................................................... 1
关键词................................................................................................................................... 1
1. FIR 滤波器....................................................................................................................... 2
1.1 FIR 滤波器的基本概念........................................................................................... 2
1.2 FIR 滤波器的特点................................................................................................... 2
2. 基于 kaiser 窗的 FIR 滤波器设计方法 .........................................................................4
2.1 公式法...................................................................................................................... 4
2.2 用 MATLAB 内部函数设计....................................................................................6
3. MATLAB 环境下的设计实例.........................................................................................7
3.1FIR 数字低通滤波器的设计.................................................................................... 7
3.2FIR 数字带通滤波器的设计.................................................................................... 9
参考文献............................................................................................................................. 13
内容摘要:简述数字滤波器中的有限长单位冲击响应(FIR)滤波器的特性和原
理,对 FIR 滤波器的 kaiser 窗函数设计方法进行研究,并通过 MATLAB 的仿真实
现。用两种方法——公式法和用 MATLAB 内部函数的方法进行设计。
关键词:FIR 滤波器 kaiser 窗 MATLAB
1
基于 kaiser 窗的 FIR 数字滤波器的设计
1. FIR 滤波器
在很多应用中,如想语音或音频信号处理中,数字滤波器是被用作实现频率选
择性功能的,因此,技术要求都是在频域通过这个滤波器的期望幅度和相位响应给
出的。一般说来,在通带有一个线性相位是很希望有的。在 FIR 滤波器情况下,有
可能具有真正的线性相位。
1.1 FIR 滤波器的基本概念
FIR 滤波器又称为非递归滤波器,是数字信号处理系统中最基本的元件,它可
以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有
限长的,因而滤波器是稳定的系统,且无相位失真。
1.2 FIR 滤波器的特点
有限长冲击响应(FIR)滤波器有以下特点:
(1) 系统的单位冲激响应 ( )h n 在有限个 n 值处不为零;
(2) 系统函数 ( )H z 在
z 处收敛,极点全部在 z = 0 处(因果系统);
0
(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例
如频率抽样结构)也包含有反馈的递归部分。
FIR 数字滤波器的差分方程描述为
iy
1
N
n
0
nixa
n
对应的系统函数为
zH
N
1
n
0
n
n za
(2.1)
(2.2)
因为它是一种线性时不变系统,也可用卷积和形式表示
()(
ixnh
n
)
(2.3)
)(
iy
1
N
n
0
2
比较(2.1)和(2.3)得:
an
nh
zH
H(z)是 1z 的 1N 阶多项式。
优点 :
N
1
n
0
znh
n
(2.4)
(1)很容易获得严格的线性相位,避免被处理的信号产生相位失真,这一特点在宽
频带信号处理、阵列信号处理、数据传输等系统中非常重要;
(2)可得到多带幅频特性;
(3)极点全部在原点(永远稳定),无稳定性问题;
(4)任何一个非因果的有限长序列,总可以通过一定的延时,转变为因果序列,所
以因果性总是满足;
(5)无反馈运算,运算误差小。
缺点:
(1)因为无极点,要获得好的过渡带特性,需以较高的阶数为代价;
(2)无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设
计程序完成。
3
2. 基于 kaiser 窗的 FIR 滤波器设计方法
2.1 公式法
窗口法设计的基本想法是要选取某一种合适的理想频率选择性滤波器,然后将它
的脉冲响应截断(或加窗)以得到一个线性相位和 因果的 FIR 滤波器。即用一个有
限长度的窗口函数序列 nw 来截取一个无限长的序列 nhd 获得一个有限长序列
nh ,即
nh
nw
。
nh
d
2.1.1kaiser 窗的性能
这 里 用 可 调 整 的 kaiser 窗 设 计 , 它 由 下 式 给 出 :
Mn
1
0
1
M
1
2
I
0
,
2
n
1
I
0
nw
参数控制最小阻带衰减 As,而且对于接近最佳 As 可以将它选择成不同的过渡
带。kaiser 窗对同一个 M 值能够给出不同的过渡带宽。
Kaiser 窗的一些经验设计式子:
已知 wp,ws,Rp 和 As,参数 M 和给出为
过渡带带宽=
滤波器长度 M
ws
As
.2
285
wp
95.7
1
参数
.0
.0
1102
5842
(
(
As
As
),7.8
4.0
)21
As
.0
50
07886
(
As
21
21),
As
50
4
2.1.2 公式法设计步骤
以低通滤波器为例:
(1) 根据对过渡带及阻带衰减的要求,用经验式子估计窗口长度 N,参数和
截止频率 wc。
(2) 用理想低通数字滤波器做逼近函数,根据 N 和 wc 求出 h d (n)。
其中
nh
d
sin
anw
c
an
为保证线性相位,取
N
a
2/1
。
用 Matlab 提供的窗函数 w=kaiser(N,beta),求出 kaiser 窗。
其中,理想低通脉冲响应函数 hd 的 M 文件
function hd=ideallp(wc,N);
tao=(N-1)/2;
n=[0:(N-1)];
m=n-tao+eps;
hd=sin(wc*m) ./(pi*m);
end
(3) 计算滤波器的冲激相应 h (n)=h d (n)*w(n)。
为方便画图,编写 freqz 的修正函数 freqz_m 的 M 文件
function [db,mag,pha,w]=freqz_m(b,a);
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:1:501))';
w=(w(1:1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
end
(4) 若所求的滤波器不为低通,可以将此滤波器的幅度响应看成几个低通滤波
器的幅度响应相加或相减得到。比如,带通滤波器可以看成是两个低通滤
波器相减得到。
(5) 验证技术指标是否满足要求。根据幅度响应算出阻带衰减是否满足要求。
5
2.2 用 MATLAB 内部函数设计
2.2.1 用到的内部函数
SP 工具箱提供一种称为 fir1 的函数,它利用窗函数法设计通常的低通、高通
以及其他多频带 FIR 滤波器。这个函数的语法有几种形式,其中包括:
1. h=fir1(N,wc)设计一个 N 阶低通 FIR 滤波器,并在向量 h 中得到脉冲响应。
根据缺省,这是一个基于 Hamming 窗的线性相位设计。
2. h=fir1(N,wc,’ftype ’)标定一种滤波器类型,其中‘ftype’是:
a.‘high’对应高通滤波器,截止频率为 wc。
b.‘stop’对应带阻滤波器,wc=[wc1 wc2]给出阻带频率范围。
c.‘DC-1’让一个多频带滤波器的第 1 个频带是一个通带。
d.‘DC-0’让一个多频带滤波器的第 1 个频带是一个阻带。
3. h=fir1(N,wc,‘ftype’,window)或者 h=fir1(N,wc,window)用了长度为 N+1 的向
量 window,它从标定的 Matlab 窗函数之一得到。缺省时为 Hamming 窗。
为了利用 kaiser 窗设计 FIR 滤波器,SP 工具箱提供了函数 kaiserord,它估
计出在 fir1 函数中要用到的窗的函数。这个基本语法是:
[N,wc,beta,ftype]=kaiserord(f,a,dev);
这个函数计算出窗的阶 N,截止频率向量 wc,beta 中的参数,以及滤波器类
型 ftype。向量 f 是归一化频带边缘频率的向量,a 是在 f 定义的频带内给定期望振
幅的向量。向量 dev 给出在每个频带内的容度(不是以 db 计)。
2.2.2 用 MATLAB 内部函数设计的步骤
(1) 利用所给的技术指标,调用 kaiserord 函数估计出阶数 N,截止频率
wc,参数 beta 以及窗函数类型 ftype。并根据 N 和 beta 算出 kaiser 窗 kw。
(2) 调用 fir1 函数 h=fir1(N,wc,ftype,kw),求出冲激响应 h(n)。
6