03DSP研究性学习报告数字滤波器设计 下载本文

内容发布更新时间 : 2025/1/8 5:01:36星期一 下面是文章的全部内容请认真阅读。

《数字信号处理》课程研究性学习报告

姓名 学号 同组成员 指导教师 时间

数字滤波器设计

【研讨题目】 基本题 1.IIR 数字滤波器设计

设计一个IIR数字低通滤波器,其能取代下列指标的模拟低通滤波器(系统的抽样频率为44.1kHz)

fp=2kHz, fs=10kHz , Ap=0.5dB, As=50dB

(1) 分别用双线性变换和冲激响应不变法设计一个BW型数字低通滤波器,并进行比较。

(2) 用双线性变换分别设计Chebyshev I型Chebyshev I I型和椭圆型数字低通滤波器,并进行比较。 【温磬提示】

在数字滤波器的设计中,不管是用双线性变换法还是冲激响应不变法,其中的参数T的取值对设计结果没有影响。但若所设计的数字滤波器要取代指定的模拟滤波器时,则抽样频率(或抽样间隔T)将对设计结果有影响。 【设计步骤】

一、脉冲响应不变法 1. 将数字滤波器的频率指标{

数字滤波器 }转换为模拟滤波器的频率指标{wk} Z变换 模拟滤波器Laplace

单位冲击响等间隔抽样 单位脉冲响应 2. 由模拟滤波器的指标设计模拟滤波器的H(s)。 模拟带通滤波器的设计步骤:

(1) 由带通滤波器的上下截频确定变换式中的参数 2B??p2??p1?0??p1?p2(2) 确定原型低通滤波器的通带截频 22?k??k/T?????0B?(3) 设计通带截频为1 (rad/s)、阻带截频为

?s、通带衰减为Ap dB、阻带衰减为As dB的原型低通滤波

(4) 将原型低通滤波器转换为带通滤波器HBP(s) 3. 利用脉冲响应不变法,将H(s)转换H(z)。 二、双线性变换法

1. 将数字滤波器的频率指标{

}转换为模拟滤波器的频率指标{wk}

??tan(k)k2. 由模拟滤波器的指标设计模拟滤波器的H(s)。

模拟带通滤波器的设计步骤:

(1) 由带通滤波器的上下截频确定变换式中的参数 2B??p2??p1?0??p1?p2(2) 确定原型低通滤波器的通带截频 222T?2??(3) 设计通带截频为1 (rad/s)、阻带截频为

???0B??s 、通带衰减为Ap dB、阻带衰减为AsdB的原型低通滤波

(4) 将原型低通滤波器转换为带通滤波器HBP(s) 3. 利用双线性变换法,将H(s)转换H(z)。

H(z)?H(s)21?zs?T1?z【仿真结果】

?1?1所设计滤波器的幅度响应和相位响应

BW型、Chebyshev I型、Chebyshev I I型和椭圆型滤波器的零极点分布 【结果分析】

双线性变换和冲激响应不变法所设计的滤波器的性能有什么不同。

BW型、Chebyshev I型、Chebyshev I I型和椭圆型滤波器的零极点分布各有什么特点。

脉冲响应不变法:

clear all;

wp=2000*2*pi; ws=10000*2*pi; Fs=44100;

Wp=wp/Fs; Ws=ws/Fs; Ap=0.5; As=50; N=buttord(wp,ws,Ap,As,'s');

fprintf('N=%.0f\\n',N)

wc=wp/(10^(0.1*Ap)-1)^(1/N/2); [numa,dena]=butter(N,wc,'s'); [numd,dend]=impinvar(numa,dena,Fs);

w=linspace(0,pi,2048); h=freqz(numd,dend,w); norm=max(abs(h));

numd=numd/norm;

figure(1);zplane(numa,dena);

figure(2);plot(w/pi,20*log10(abs(h/norm)));

xlabel('Normalized frequency'); ylabel('Gain,dB'); w=[Wp Ws]; 双线性变化法:

clear all;

wp=2000*2*pi; ws=10000*2*pi; Fs=44100;

Wp=wp/Fs; Ws=ws/Fs; Ap=0.5; As=50; N=buttord(wp,ws,Ap,As,'s'); fprintf('N=%.0f\\n',N)

wc=wp/(10^(0.1*Ap)-1)^(1/N/2); [numa,dena]=butter(N,wc,'s'); [numd,dend]=bilinear(numa,dena,Fs);

w=linspace(0,pi,2048); h=freqz(numd,dend,w); norm=max(abs(h));

Chebyshev 1:

clear all;

wp=2000*2*pi; ws=10000*2*pi; Fs=44100;

Wp=wp/Fs; Ws=ws/Fs; Ap=0.5; As=50; N=cheb1ord(wp,ws,Ap,As,'s'); fprintf('N=%.0f\\n',N)

wc=wp/(10^(0.1*Ap)-1)^(1/N/2); [numa,dena]=cheby1(N,Ap,wc,'s'); [numd,dend]=bilinear(numa,dena,Fs);

w=linspace(0,pi,2048); h=freqz(numd,dend,w); norm=max(abs(h));

h=freqz(numd,dend,w);

fprintf('Ap= %.4f\\n',-20*log10( abs(h(1))));

fprintf('As= %.4f\\n',-20*log10( abs(h(2)))); grid on ;

numd=numd/norm;

figure(1); zplane(numa,dena); figure(2);

plot(w/pi,20*log10(abs(h/norm))); xlabel('Normalized frequency'); ylabel('Gain,dB'); w=[Wp Ws];

h=freqz(numd,dend,w);

fprintf('Ap= %.4f\\n',-20*log10( abs(h(1))));

fprintf('As= %.4f\\n',-20*log10( abs(h(2)))); grid on ;

numd=numd/norm;

figure(1); zplane(numa,dena); figure(2);

plot(w/pi,20*log10(abs(h/norm))); xlabel('Normalized frequency'); ylabel('Gain,dB'); w=[Wp Ws];

h=freqz(numd,dend,w);

fprintf('Ap= %.4f\\n',-20*log10( abs(h(1))));

fprintf('As= %.4f\\n',-20*log10( abs(h(2)))); grid on ;