用窗函数法设计FIR数字低通滤波器要点

用窗函数法设计FIR数字低通滤波器要点
用窗函数法设计FIR数字低通滤波器要点

河北科技大学课程设计报告

学生姓名:学号:

专业班级:

课程名称:

学年学期

指导教师:

20 年月

课程设计成绩评定表

目录

1. 窗函数设计低通滤波器

1.1设计目的 (1)

1.2设计原理推导与计算 (1)

1.3设计内容与要求 (2)

1.4设计源程序与运行结果 (3)

1.5思考题 (10)

1.6心得体会 (14)

参考文献 (15)

1.窗函数设计低通滤波器

1.1设计目的

1. 熟悉设计线性相位数字滤波器的一般步骤。

2. 掌握用窗函数法设计FIR 数字滤波器的原理和方法。

3. 熟悉各种窗函数的作用以及各种窗函数对滤波器特性的影响。

4. 学会根据指标要求选择合适的窗函数。

1.2设计原理推导与计算

如果所希望的滤波器的理想的频率响应函数为()

ωj d e H ,则其对应的单位脉冲响应为

()()

ωπ

ωωπ

π

d e e H n h j j d d ?-

=

21

(4.1) 窗函数设计法的基本原理是设计设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即

()?????≤<≤=-π

ωωωωωα

ω

c c j j

d ,,e

e H 0,其中21-=N α

()()

()[]()

a n a n d e e d e e

H n h c j j j j d d c

c

--=

=

=

??-

--

πωωπ

ωπ

ωαωω

ωαω

π

π

ω

sin 21

21

用有限长单位脉冲响应序列()n h 逼近()n h d 。由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到: ()()()n n h n h d ω= (4.2)

()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函

数()ωj e H 为

()()n

j N n j e

n h e

H ωω

∑-==1

(4.3)

式中,N 为所选窗函数()n ω的长度。

用窗函数法设计的滤波器性能取决于窗函数()n ω的类型及窗口长度N 的取

值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表(一)。

表(一) 各种窗函数的基本参数

这样选定窗函数类型和长度N 之后,求出单位脉冲响应()()()n n h n h d ω?=,并按照式(4.3)求出()ωj e H 。()ωj e H 是否满足要求,如果()ωj e H 不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。

1.3设计内容与要求

(一)设计要求:

1. 学会计算滤波器各项性能指标及如何来满足给定的指标要求。

2. 用MATLAB 语言编程实现给定指标要求的滤波器的设计。

3. 熟悉MATLAB 语言,独立编写程序。

4. 设计低通FIR 滤波器的指标:

通带最大波动

0.25,

p R dB =,0.2p ωπ

=

阻带最小衰减 50,

s A dB =,

0.3s ωπ=

(二)、设计内容:

1.熟悉各种窗函数,在MATLAB 命令窗下浏览各种窗函数,绘出(或打印)所看到的窗函数图。

2.编写计算理想低通滤波器单位抽样响应hd(n)的m 函数文件ideal.m 。

3. 编写计算N 阶差分方程所描述系统频响函数()j H e ω的m 函数文件fr.m 。

4.根据指标要求选择窗函数的形状与长度N 。(至少选择两种符合要求的窗函数及其对应的长度)。

5.编写.m 程序文件,通过调用ideal.m 和fr .m 文件,计算你设计的实际低通FIR 滤波器的单位抽样响应h(n)和频率响应()j H e ω,打印在频率区间[O ,π]上的幅频响应特性曲线()~j H e ωω,幅度用分贝表示。

6.验证所设计的滤波器是否满足指标要求。

1.4设计的源程序及运行结果:

1、利用MATLAB 窗口观察各种窗函数: %巴特利特窗 w=bartlett(20); subplot(3,2,1); plot(w);

stem(w,'y');%'y'表示黄色 %stem 表示以离散图输出 title('巴特利特床窗'); xlabel('n');%横坐标为n ylabel('w(n)');%纵坐标为w(n)

%布莱克曼窗 w=blackman(20);

subplot(3,2,2); plot(w);

stem(w,'b');%'b'表示蓝色 title('布莱克曼窗'); xlabel('n'); ylabel('w(n)'); %矩形窗 w=boxcar(20); subplot(3,2,3); plot(w); stem(w,'r'); title('矩形窗');

xlabel('n');

ylabel('w(n)');

%海明窗

w=hamming(20);

plot(w);

stem(w,'m');%'m'表示紫色title('海明窗');

xlabel('n');

ylabel('w(n)');

%汉宁窗

w=hanning(20);

subplot(3,2,5);

plot(w);

stem(w,'g');%'g'表示绿色

title('汉宁窗');

xlabel('n');

ylabel('w(n)');

%凯泽窗

beta=5.6533;

w=kaiser(20,beta);

subplot(3,2,6);

plot(w);

stem(w,'k');%'k'表示黑色

title('凯泽

窗,beta=5.6533');

xlabel('n');

ylabel('w(n)');

常用窗函数的图形

2、理想低通滤波器单位抽样响应hd(n)的m函数文件ideal.m。

function hd=ideal(wc,M)

%理想低通滤波器计算

%hd为0到M-1之间的理想脉冲响应

%wc为截止频率

%M为理想滤波器的长度

alpha=(M-1)/2;

n=0:M-1;

m=n-alpha+eps;

hd=sin(wc*m)./(pi*m);

3、N阶差分方程所描述的系统频响函数的m函数文件fr.m。function[db,mag,pha,gfd,w]=fr(b,a)

%求解系统响应

%db为相位振幅(db)

%mag为绝对振幅

%pha为相位响应

%grd为群延时

%w为频率样本点矢量

%b为Ha(z)分析多项式系数(对FIR而言,b=h)

%a为Hz(z)分母多项式系数(对FIR而言,a=1)

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:501))';

w=(w(1:501))';

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

gfd=grpdelay(b,a,w);

4、实际低通滤波器FIR:

%用海明窗设计低通滤波器

wp=0.2*pi;

ws=0.3*pi;

tr_width=ws-wp;

disp(['海明窗设计低通滤波器参数:']);

M=ceil(6.6*pi/tr_width)+1;

disp(['滤波器的长度为',num2str(M)]);

n=0:M-1;

wc=(ws+wp)/2; %理想LPF的截止频率

hd=ideal(wc,M);

w_ham=(hamming(M))';

h=hd.*w_ham;

[db,mag,pha,gfd,w]=fr(h,[1]);

delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1))); %求出实际通带波动

disp(['实际带通波动为',num2str(Rp)]);

As=-round(max(db(ws/delta_w+1:1:501))); %求出最小阻带衰减disp(['最小阻带衰减为-',num2str(As)],’db’);

%绘图

subplot(1,1,1)

subplot(2,6,1)

stem(n,hd);

title('理想冲击响应');

axis([0 M-1 -0.1 0.3]);

ylabel('hd(n)');

subplot(2,6,2)

stem(n,w_ham);

title('海明窗');

axis([0 M-1 0 1.1]);

ylabel('w(n)');

subplot(2,6,7)

stem(n,h);

title('实际冲激响应');

axis([0 M-1 -0.1 0.3]);

xlabel('n');

ylabel('h(n)');

subplot(2,6,8)

plot(w/pi,db);

title('幅度响应(db)');

axis([0 1 -100 10]);

grid;

xlabel('以pi为单位的频率');

ylabel('分贝数');

图(1)海明窗设计的FIR 海明窗设计低通滤波器参数:

滤波器的长度为67

实际带通波动为0.03936

最小阻带衰减为-52db

%用布莱克曼窗设计低通滤波器

wp=0.2*pi;

ws=0.3*pi;

tr_width=ws-wp;

disp(['布莱克曼窗设计低通滤波器的参数:']);

M=ceil(11.0*pi/tr_width)+1;

disp(['滤波器的长度为',num2str(M)]);

n=0:M-1;

%理想LPF的截止频率

wc=(ws+wp)/2;

hd=ideal(wc,M);

w_bla=(blackman(M))';

h=hd.*w_bla;

[db,mag,pha,gfd,w]=fr(h,[1]);

delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1))); %求出实际通带波动

disp(['实际带通波动为',num2str(Rp)]);

As=-round(max(db(ws/delta_w+1:1:501))); %求出最小阻带衰减disp(['最小阻带衰减-',num2str(As)],’db’);

%绘图

subplot(2,6,3)

stem(n,hd);

title('理想冲击响应');

axis([0 M-1 -0.1 0.3]);

ylabel('hd(n)');

subplot(2,6,4)

stem(n,w_bla);

title('布莱克曼窗');

axis([0 M-1 0 1.1]);

ylabel('w(n)');

subplot(2,6,9)

stem(n,h);

title('实际冲激响应');

axis([0 M-1 -0.1 0.3]);

xlabel('n');

ylabel('h(n)');

subplot(2,6,10)

plot(w/pi,db);

title('幅度响应(db)');

axis([0 1 -100 10]);

grid;

xlabel('以pi为单位的频率');

ylabel('分贝数');

图(2)布莱克曼窗设计的FIR 布莱克曼窗设计低通滤波器的参数:

相关主题
相关文档
最新文档