230 likes | 421 Views
实验三 IIR 数字滤波器的设计. 一、实验目的. 掌握双线性变换法及脉冲相应不变法设计 IIR 数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通 IIR 数字滤波器的计算机编程。 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。 熟悉 Butterworth 滤波器、 Chebyshev 滤波器和椭圆滤波器的频率特性。. 二、实验原理与方法. (1) 脉冲响应不变法
E N D
一、实验目的 • 掌握双线性变换法及脉冲相应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。 • 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。 • 熟悉Butterworth滤波器、Chebyshev滤波器和椭圆滤波器的频率特性。
二、实验原理与方法 • (1)脉冲响应不变法 • 用数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应ha(t),让h(n)正好等于ha(t)的采样值,即 • h(n)= ha(nT) • 其中T为采样间隔,如果以Ha(S)及H(z)分别表示ha(t)的拉式变换及h(n)的Z变换
(2) 双线性变换法 • 以低通数字滤波器为例,将设计步骤归纳如下: • 确定数字滤波器的性能指标:通带临界频率fp、阻带临界频率fr;通带内的最大衰减Ap;阻带内的最小衰减Ar;采样周期T; • 确定相应的数字角频率,ωp=2πfpT;ωr=2πfrT; • 计算经过预畸的相应模拟低通原型的频率 • 根据Ωp和Ωr计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s); • 用上面的双线性变换公式代入Ha(s),求出所设计的传递函数H(z); • 分析滤波器特性,检查其指标是否满足要求。
三、实验内容及步骤 • (1)、fp=0.3KHz,Ap=0.8dB, fr=0.2KHz,Ar=20dB,T=1ms;设计一Chebyshev高通滤波器;观察其通带损耗和阻带衰减是否满足要求。
方法一:采用双线性变换法 • 参考源程序如下: • wc=2*1000*tan(2*pi*300/(2*1000)) • wr=2*1000*tan(2*pi*200/(2*1000)); • [N,wn]=cheb1ord(wc,wr,0.8,20,'s') • [B,A] = cheby1(N,0.8,wn,'high','s'); • [num,den]=bilinear(B,A,1000); • [h,w]=freqz(num,den); • f = w/(2*pi)*1000; • plot(f,20*log10(abs(h)),'r'); • axis([0,500,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
方法二:用matlab函数设计数字滤波器 • % 方法:利用matlab提供的cheby1函数直接设计数字滤波器,源程序如下: • wc=300/500 • wr=200/500; • [N,wn]=cheb1ord(wc,wr,0.8,20) • [B1,A1] = cheby1(N,0.8,wn,'high') • [h1,w] = freqz(B1,A1); • f = w/(2*pi)*1000; • plot(f,20*log10(abs(h1)),'r'); • axis([0,500,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
(2)、fp=0.2KHz,Ap=1dB, fr=0.3KHz,Ar=25dB,T=1ms;分别用脉冲响应不变法及双线性变换法设计一Butterworth数字低通滤波器,观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量,检查是否满足要求。比较这两种方法的优缺点。
%上机实验内容(2)分别用脉冲响应不变法和双线性变换法设计巴特沃思数字低通滤波器%上机实验内容(2)分别用脉冲响应不变法和双线性变换法设计巴特沃思数字低通滤波器 • T = 0.001; • fs = 1000; • fc = 200; • fr = 300; • wp1 = 2*pi*fc • wr1 = 2*pi*fr • [N1,wn1] = buttord(wp1,wr1,1,25,'s') • [B1,A1] = butter(N1,wn1,'s'); • [num1,den1] = impinvar(B1,A1,fs); • [h1,w] = freqz(num1,den1); • wp2 = 2*fs*tan(2*pi*fc/(2*fs)) • wr2 = 2*fs*tan(2*pi*fr/(2*fs)) • [N2,wn2] = buttord(wp2,wr2,1,25,'s') • [B2,A2] = butter(N2,wn2,'s'); • [num2,den2] = bilinear(B2,A2,fs); • [h2,w] = freqz(num2,den2); • f = w/(2*pi)*fs; • plot(f,20*log10(abs(h1)),'-.',f,20*log10(abs(h2)),'-'); • axis([0,500,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
(3)、利用双线性变换法分别设计满足下列指标的Butterworth型、Chebyshev型和椭圆型数字低通滤波器,并作图验证设计结果。(3)、利用双线性变换法分别设计满足下列指标的Butterworth型、Chebyshev型和椭圆型数字低通滤波器,并作图验证设计结果。 fp=1.2kHz, Ap≤0.5dB, fr=2KHz, Ar≥40dB, fs=8KHz
%上机实验内容(3)巴特沃思低通滤波器 • % 方法:采用双线性变换法 • fs=8000; • wc=2*fs*tan(2*pi*1200/(2*fs)) • wr=2*fs*tan(2*pi*2000/(2*fs)); • [N,wn]=buttord(wc,wr,0.5,40,'s') • [B,A] = butter(N,wn,'s'); • [num,den]=bilinear(B,A,fs); • [h,w]=freqz(num,den); • f = w/(2*pi)*fs; • plot(f,20*log10(abs(h)),'r'); • axis([0,fs/2,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
%上机实验内容(3)切比雪夫低通滤波器 • % 方法:采用双线性变换法 • fs=8000; • wc=2*fs*tan(2*pi*1200/(2*fs)) • wr=2*fs*tan(2*pi*2000/(2*fs)); • [N,wn]=cheb1ord(wc,wr,0.5,40,'s') • [B,A] = cheby1(N,0.5,wn,'s'); • [num,den]=bilinear(B,A,fs); • [h,w]=freqz(num,den); • f = w/(2*pi)*fs; • plot(f,20*log10(abs(h)),'r'); • axis([0,fs/2,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
%上机实验内容(3)椭圆低通滤波器 • % 方法:采用双线性变换法 • fs=8000; • wc=2*fs*tan(2*pi*1200/(2*fs)) • wr=2*fs*tan(2*pi*2000/(2*fs)); • [N,wn]=ellipord(wc,wr,0.5,40,'s') • [B,A] = ellip(N,0.5,40,wn,'s'); • [num,den]=bilinear(B,A,fs); • [h,w]=freqz(num,den); • f = w/(2*pi)*fs; • plot(f,20*log10(abs(h)),'r'); • axis([0,fs/2,-80,10]); • grid; • xlabel('频率/Hz ') • ylabel('幅值/dB')
四、实验思考 • 双线性变换法中Ω和ω之间的关系是非线性的,在实验中你注意到这种非线性关系了吗?从哪几种数字滤波器的幅频特性曲线中可以观察到这种非线性关系?
五、实 践 题 • 要求用matlab求解和设计。 • 1、用脉冲响应不变法将模拟滤波器H(s)=(3s+2)/(2s2+3s+1)变为数字滤波器H(z),采样周期Ts=0.1s • 2、设计一个巴特沃思高通数字滤波器,通带边界频率为300Hz,阻带边界频率为200Hz,通带波纹小于1db,阻带衰减大于20db,采样频率为1000Hz。(方法一采用matlab直接设计数字滤波器,方法二用双线性变换法)
实 践 题 参考答案 • 1、H(z)分子多项式系数bz1 =[ 0.3000 -0.2807],分母多项式系数za1 =[ 2.0000 -3.7121 1.7214] • 2、设计结果见下页图