数字信号处理翻转课堂笔记14
The Flipped Classroom14 of DSP
对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著
一、要点
(1)低通模拟滤波器到高通、带通、带阻模拟滤波器的频率变换关系(难点);(2)利用MATLAB设计模拟高通、带通、带阻滤波器;
(3)数字高通、带通、带阻滤波器的设计方法和步骤;
(4)基于MATLAB设计IIR数字高通、带通、带阻滤波器;
(5)IIR滤波器的应用。
二、问题与解答
1、简述利用频率变换方法设计数字高通、带通、带阻滤波器的基本原理和步骤(模拟域频率变换方法)。为什么在设计这些滤波器时,通常采用双线性变换的方法?如果模拟带通滤波器的幅频特性关于中心频率几何对称,则采用双线性变换法将其转换为数字滤波器之后,是否仍能保持这种对称性?为什么?
2、简述模拟低通滤波器与模拟高通、带通、带阻滤波器的频率变换关系,总结其通带、阻带截止频率的对应性。
3、基于MATLAB设计一个模拟低通滤波器,然后采用频率变换分别将其转换为模拟高通和带通滤波器(利用lp2hp、lp2bp函数),滤波器技术指标自定。分别画出模拟低通、高通、带通滤波器的幅频响应(用freqs函数,将结果转换为非对数特性再画图)和冲激响应(用impulse函数)。分析不同类型滤波器幅频特性的特点及截止频率的对应关系;比较不同类型滤波器冲激响应特性的不同并给出直观解释(从时域响应变化快慢的角度对比),并据此讨论为什么模拟高通滤波器不能采用脉冲响应不变法转换为数字高通滤波器,而低通和带通滤波器则可以。
4、自定滤波器技术指标,直接利用MATLAB函数分别设计一个数字低通、高通、带阻滤波器,画出各滤波器的幅频特性(用freqz函数,将结果转换为非对数特性再画图)和单位脉冲响应(用impz函数),比较其单位响应的差异并给出直观解释(从单位响应随时间变化的快慢角度进行分析)。
5、设模拟信号x(t)=cos(800πt)+ cos(1000πt)+ cos(1600πt),用2000Hz的采样频率对其数字化,得到相应的序列x(n)。请设计一个数字滤波器对x(n)进行滤波,保留cos(1000πt)分量(幅度变化量小于1%),滤除其他两个分量(幅度衰减到原幅度的1%以下)。①请根据以上要求,确定数字滤波器的技术指标参数并完成滤波器设计,画出所设计数字滤波器的幅频特性。②用所设计滤波器对x(n)进行滤波,画出滤波前后x(n)的信号波形和幅度频谱,以验证滤波结果的正确性。
1、频率变换法的基本思路
简述利用频率变换方法设计数字高通、带通、带阻滤波器的基本原理和步骤(模拟域频率变换方法)。为什么在设计这些滤波器时,通常采用双线性变换的方法?如果模拟带通滤波器的幅频特性关于中心频率几何对称,则采用双线性变换法将其转换为数字滤波器之后,是否仍能保持这种对称性?为什么?
因为双线性变换法没有频谱混叠。
不能保持这种对称性,因为在双线性变换法中,数字频率与模拟频率之间是非线性关系——如果模拟频率的刻度是均匀的,则其映像数字频率的刻度不是均匀的,而是随着数字频率的增加愈来愈密。因此,如果转换前关于中心频率几何对称,转换后便不能保持这种对称性。
2、频率映射关系
简述模拟低通滤波器与模拟高通、带通、带阻滤波器的频率变换关系,总结其通带、阻带截止频率的对应性。
低通滤波器到高通滤波器:
低通滤波器的通带[0,λ_p]映射为高通滤波器的通带[-∞,Ω_ph],而将低通滤波器的通带[-λ_p,0]映射为高通滤波器的通带[Ω_ph,∞]。同样,将低通滤波器的阻带[λ_s,∞]映射为高通滤波器的阻带[-Ω_sh,0],而将低通滤波器的阻带[-∞,-λ_s]映射为高通滤波器的阻带[0,Ω_sh]。
低通滤波器到带通滤波器:
Ω_pl和Ω_pu分别为带通滤波器的通带下截止频率和通带上截止频率;Ω_0称为带通滤波器的中心频率。
频率λ=0映射为频率Ω=士Ω_0,频率λ=λ_p映射为频率Ω_pu和-Ω_pl,频率λ=-λ_p映射为频率-Ω_pu和Ω_pl。低通滤波器G§的通带[-λ_p,λ_p]映射为带通滤波器的通带[-Ω_pu,-Ω_pl]和[Ω_pl,Ω_pu]。同样道理,频率λ=λ_s,映射为频率Ω_su和Ω_sl,频率λ=-λ_s映射为频率-Ω_su和Ω_sl。
如图所示:
低通滤波器到带阻滤波器:
Ω_sl和Ω_su分别为带阻滤波器的阻带下截止频率和阻带上截止频率;Ω_0称为带阻滤波器的阻带中心频率。λ是Ω的二次函数,从低通滤波器频率λ到带阻滤波器频率2为双值映射。
当λ从-∞→-λ_s→-λ_p→0-时
①Ω从-Ω_0→-Ω_su→-Ω_pu→-∞②Ω从Ω_0→Ω_sl→Ω_pl→0+。
当λ从0+→λ_p→λ_s→+∞时
①Ω从0-→-Ω_pl→-Ω_sl→-Ω_0②Ω从+∞→+Ω_pu→+Ω_su→Ω_0。
3、设计模拟低通滤波器,频率变换法转换成高通和带通滤波器
基于MATLAB设计一个模拟低通滤波器,然后采用频率变换分别将其转换为模拟高通和带通滤波器(利用lp2hp、lp2bp函数),滤波器技术指标自定。分别画出模拟低通、高通、带通滤波器的幅频响应(用freqs函数,将结果转换为非对数特性再画图)和冲激响应(用impulse函数)。分析不同类型滤波器幅频特性的特点及截止频率的对应关系;比较不同类型滤波器冲激响应特性的不同并给出直观解释(从时域响应变化快慢的角度对比),并据此讨论为什么模拟高通滤波器不能采用脉冲响应不变法转换为数字高通滤波器,而低通和带通滤波器则可以。
代码:
%% 代码:
wp=1;
ws=4;
Rp=0.1;
As=40; %设置滤波器指标参数
[N,wc]=buttord(wp,ws,Rp,As,'s'); %计算滤波器G(p)阶数N和3dB截止频率
[B,A]=butter(N,wc,'s'); %计算低通滤波器G(p)系统函数分子分母多项式系数
wph=2*pi*4000; %高通模拟滤波器通带边界频率4000Hz
[BH,AH]=lp2hp(B,A,wph); %低通到高通转换
[BL,AL]=lp2bp(B,A,2*pi*3000,2*pi*1000); %低通到带通转换,中心频率为3000Hz,带宽为1000Hz
%绘制低通滤波器G(p)的幅频响应曲线
wk=0:0.01:10;
Hk=freqs(B,A,wk);
figure(1)
plot(wk,abs(Hk));
grid on
xlabel('归一化频率');
ylabel('幅度(dB)')
title('(a) 归一化低通损耗函数')
%绘制高通滤波器的幅频响应曲线
k=0:511;
fk=0:6000/512:6000;
wk=2*pi*fk;
Hk=freqs(BH,AH,wk);
figure(2)
plot(fk,abs(Hk));
grid on
xlabel('频率(Hz)');
ylabel('幅度(dB)')
title('(b) 高通滤波器损耗函数')
%绘制带通滤波器的幅频响应曲线
Hk1=freqs(BL,AL,wk);
figure(3)
plot(fk,abs(Hk1));
grid on
xlabel('频率(Hz)');
ylabel('幅度(dB)')
title('(c) 带通滤波器损耗函数')
%求其冲激响应
figure(4)
impulse(B,A)
figure(5)
impulse(BH,AH)
figure(6)
impulse(BL,AL)
运行结果:
由前三张图可见,高通和带通滤波器的转化结果符合预期(预期见注释)
由后三张图可见,通过观察幅度大小的变化,低通滤波器的冲激响应变化最慢,带通滤波器次之,高通滤波器最快。
脉冲响应不变法在高频处存在频谱混叠现象,不能用于高通滤波器的转换。
4、数字滤波器的频率响应和单位响应
自定滤波器技术指标,直接利用MATLAB函数分别设计一个数字低通、高通、带阻滤波器,画出各滤波器的幅频特性(用freqz函数,将结果转换为非对数特性再画图)和单位脉冲响应(用impz函数),比较其单位响应的差异并给出直观解释(从单位响应随时间变化的快慢角度进行分析)。
代码:
%% 代码:
clear
T=1;
%% 低通滤波器
wpz=0.1*pi;
wsz=0.2*pi; %数字指标
wp=2*tan(wpz/2)/T;
ws=2*tan(wsz/2)/T;
Rp=0.1;
As=40;
[N,wc]=buttord(wp,ws,Rp,As,'s');
[B,A]=butter(N,wc,'s');
[Bz,Az]=bilinear(B,A,1/T);
hn1=impz(Bz,Az);
[H1,w]=freqz(Bz,Az);
subplot(2,3,1)
stem(hn1,'.');
title('低通滤波器的冲激响应')
subplot(2,3,4)
plot(w/pi,abs(H1));
title('低通滤波器的幅频响应')
%% 高通滤波器
wph=pi;
[BH,AH]=lp2hp(B,A,wph);
[Bz,Az]=bilinear(BH,AH,1/T);
hn1=impz(Bz,Az);
[H1,w]=freqz(Bz,Az);
subplot(2,3,2)
stem(hn1,'.');
title('高通滤波器的冲激响应')
subplot(2,3,5)
plot(w/pi,abs(H1));
title('高通滤波器的幅频响应')
%% 带阻滤波器
w0=0.5*pi;
bw=pi*2;
[BP,AP]=lp2bp(B,A,w0,bw);
[Bz,Az]=bilinear(BP,AP,1/T);
hn1=impz(Bz,Az);
[H1,w]=freqz(Bz,Az);
subplot(2,3,3)
stem(hn1,'.');
title('带阻滤波器的冲激响应')
subplot(2,3,6)
plot(w/pi,abs(H1));
title('带阻滤波器的幅频响应')
运行结果:
分析:
由图可知,当为低通滤波器时,得到低频成分,单位响应的相邻样值变化很慢;当为高通滤波器时,得到高频成分,单位响应的相邻样值变化很快以至于正负交替;
当为带通滤波器时,相邻值变化有时正负交替,有时不交替,处于中间状态。
5、数字滤波器的应用
设模拟信号x(t)=cos(800πt)+ cos(1000πt)+ cos(1600πt),用2000Hz的采样频率对其数字化,得到相应的序列x(n)。请设计一个数字滤波器对x(n)进行滤波,保留cos(1000πt)分量(幅度变化量小于1%),滤除其他两个分量(幅度衰减到原幅度的1%以下)。①请根据以上要求,确定数字滤波器的技术指标参数并完成滤波器设计,画出所设计数字滤波器的幅频特性。②用所设计滤波器对x(n)进行滤波,画出滤波前后x(n)的信号波形和幅度频谱,以验证滤波结果的正确性。
代码:
%% 代码:
dt=0.0001;
t=0:dt:0.02;
xa=cos(800*pi*t)+cos(1000*pi*t)+cos(1600*pi*t);
Wmax=2*pi*1000;
K=500;
k=0:1:K;
W=k*Wmax/K; %求模拟角频率
Xa=xa*exp(-j*t'*W)*dt;
%采样
f=2000;
N=128;
n=0:N-1;
xn=cos(800*pi*n/f)+cos(1000*pi*n/f)+cos(1600*pi*n/f);
Xa1=fft(xn,N);
w=n*2*pi/N;
subplot(2,2,1)
stem(n,xn)
axis([0 140 -4 4])
subplot(2,2,2)
plot(w/pi,abs(Xa1));
grid on
xlabel('w/\pi')
title('采样频率f=2000Hz')
%设计滤波器
wp=[2*490/f,2*550/f];
ws=[2*400/f,2*600/f];
T=2;
rp=0.01; %最多0.08,0.09
rs=40; %至少40dB
[N,wpo]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wpo);
[db,mag,pha,w]=freqz_m(B,A);
% subplot(3,2,4)
% k=0:511;
% fk=0:8/512:8;
% wk=2*pi*fk;
% plot(w/pi,db)
% grid on
% xlabel('w/\pi')
% ylabel('幅度(dB)')
% title('数字滤波器')
% axis([0,1,-50,0])
%对xn进行滤波
Y=filter(B,A,xn);
N=128;
n=0:N-1;
Xa2=fft(Y,N);
w=n*2*pi/N;
subplot(2,2,3)
stem(n,Y)
subplot(2,2,4)
plot(w/pi,abs(Xa2));
grid on
xlabel('w/\pi')
title('采样频率f=2000Hz')
运行结果:
如图,0.4π和0.8π频率的冲激都被滤掉了,可见带通滤波器实现了它的功能。
三、反思总结
暂无