内容发布更新时间 : 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 ;