数字信号处理 实验八 FIR数字滤波器的MATLAB实现

2018-12-29 23:43

实验八 FIR数字滤波器的MATLAB实现

一、 实验目的:学习用窗函数法设计FIR数字滤波器的原理及其设计步骤;学习编写数字滤波器的设计程序的方法,并能进行正确编程;根据给定的滤波器指标,给出设计步骤。 二、 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 三、 实验内容:

(一) 实验原理及实例分析 1. FIR低通数字滤波器的设计原理

如果系统的冲激响应hd(n)为已知,则系统的输入/输出关系为:

y(n)?x(n)?hd(n)

对于低通滤波器,只要设计出低通滤波器的冲激响应函数,就可以由上式得到系统的输出了。假设所希望的数字滤波器的频率响应为Hd(e它与Hd(ejwjw),它是频域的周期函数,周期为2?,那么

)相对应的傅立叶系数为

hd(n)?12?????Hd(ejw)ejwjnwdw

以hd(n)为冲激响应的数字滤波器将具有频域响Hd(e但是将hd(n)作为滤波器脉冲响应有两个问题:

)。

(1) 它是无限长的,与FIP滤波器脉冲响应有限长这一前提不一致 (2) 它是非因果的,hd(n)?0,n?0 对此,要采取以下的措施,

(1) 将hd(n)截短 (2)将其往右平移,

N?1由此得到h2(n)的实际频域响应Hd(ejw)??hn?02(n)ejnw,与理想频域响应Hd(ejw)相近,

但不完全一致。理论证明上述现象是对hd(n)进行简单截短处理的必然结果,一般称为吉布斯现象,为尽可能的减少吉布斯现象,应对hd(n)进行加窗截取,即以h(n)?hd(n)?WN(n)作为FIR滤波器的系数。

常用的窗函数有矩形窗、海明窗和布莱克曼窗等。

2. 用窗函数法设计FIR滤波器

MATLAB设计FIR滤波器有多种方法和对应的函数,见表8-1。

表8-1 MATLAB设计FIR滤波器的方法和函数

方法 描述 函数 窗方法 多带方法 最小二乘法 任意响应法 余弦法 使用窗函数和逆傅立叶变换实现 包含子带频率域 使用最小二乘法将整个频率域上的错误几率压缩到最小 使用任意响应,包括非线性相位以及复滤波器 使用三角函数的低通响应 fir1,fir2,kaiserord等 firls,remez等 fircls ,fircls1等 cremez等 firrcos等

窗函数方法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计,从根本上讲,使用窗函数的目的就是消除由无限序列的截短而引起的Gibbs现象所带来的影响。

窗函数设计线性相位FIR滤波器步骤如下:

(1) 确定数字滤波器的性能要求,临界频率{wk},滤波器单位脉冲响应长度N (2) 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率

响应Hd(ejw)的幅频特性和相频特性

jw(3) 求理想单位脉冲响应hd(n),在实际计算中,可对Hd(e的hM(n),用hM(n)代替hd(n)

)采样,并对其求IDFT

(4) 选择适当的窗函数w(n),根据h(n)?hd(n)?WN(n)求所需设计的FIR滤波

器单位脉冲响应

(5) 求Hd(e

【实例8-1】 设计一个34阶的高通滤波器,截止频率为0.48,使用具有30dB波纹的

chebyshev窗。 解:源程序如下:

b=fir1(34,0.48,'high',chebwin(35,30));

freqz(b,1,512) 其响应波形如图7-1所示。

jw),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度

N,重复上述设计过程,以得到满意的结果

图8-1 带通FIR滤波器

【实例8-2】 设计具有下面指标的低通FIR滤波器

wp?0.2?,Rp?0.25dB,ws?0.3?,AS?50dB

由于其最小阻带衰减为50dB,因此可以选择hamming窗来实现这个滤波器,因为它具有较小的过渡带。 解:MATLAB源程序为 % 数字滤波器指标

wp=0.2*pi; ws=0.3*pi; tr_width=ws-wp;

M=ceil(6.6*pi/tr_width)+1; n=[0:1:M-1]; wc=(ws+wp)/2; hd=ideal_lp(wc,M);

% 生成hamming窗

w_ham=(hamming(M))';

% 频域图像的绘制

h=hd.*w_ham; freqz (h,[1]) figure(2);

subplot(2,2,1),stem(n,hd);title('理想脉冲响应') axis([0 M-1 -0.3 0.3]);xlabel('n');ylabel('hd(n)') xa=0.*n; hold on plot(n,xa,'k'); hold off

subplot(2,2,2),stem(n,w_ham);title('hamming窗') axis([0 M-1 -0.3 1.2]);xlabel('n');ylabel('w(n)')

subplot(2,2,3),stem(n,h);title('实际脉冲响应') axis([0 M-1 -0.3 0.3]);xlabel('n');ylabel('h(n)') hold on plot(n,xa,'k'); hold off

其响应波形如图8-2所示。

图8-2 hamming窗函数设计FIR滤波器

【实例8-3】设带通滤波器的指标为

wp1?0.35?,wp2?0.8?,ws1?0.2?,ws2?0.65?,As?60dB选择Blackman窗来实现这个滤波器。 解:MATLAB源程序为 % 数字滤波器指标

ws1=0.2*pi; wp1=0.35*pi;

ws2=0.65*pi; wp2=0.8*pi; As=60;

tr_width=min((wp1-ws1),(wp2-ws2)); M=ceil(11*pi/tr_width)+1; n=[0:1:M-1]; wc1=(ws1+wp1)/2;

wc2=(ws2+wp2)/2;

hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);

% 生成blackman窗 w_bla=(blackman(M))'; h=hd.*w_bla

% 频域图像的绘制 freqz(h,[1])

figure(2);

subplot(2,2,1),stem(n,hd);title('idael impulse response') axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('hd(n)') xa=0.*n; hold on

plot(n,xa,'k'); hold off

subplot(2,2,2),stem(n,w_bla);title('blackman window') axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)')

subplot(2,2,3),stem(n,h);title('actual impulse response') axis([0 M-1 -0.4 0.5]);xlabel('n');ylabel('h(n)') hold on

plot(n,xa,'k');

hold off

其响应波形如图8-3所示。

图8-3 blackman窗函数设计FIR滤波器

(二) 编程练习

1. 利用hamming窗设计一个48阶的FIR带通滤波器,通带为Wn=[0.35 0.65]。 2. 用矩形窗设计一个线性相位高通滤波器。其中

?e?j(w-?)?,??wc?w???jwHd(e)??

0,0?w???w?c?


数字信号处理 实验八 FIR数字滤波器的MATLAB实现.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:网络工程实验-校园网

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: