1、电信类课程试验报告 学 院:基础信息工程 系 别:电子信息工程 课程名称:数字信号处理 姓 名: 学 号: 日 期: 实验六 实验名称:用双线性变换法设计IIR数字滤波器 一、实验目的 熟悉模拟巴特沃兹(Batterworth)滤波器设计和用双线性变换去设计IIR数字滤波器的方法. 二、主要函数简介 用双线性变换法设计IIR滤波器是IIR的滤波器设计的经典方法 ,首先根据模拟滤波器的指标设计出相应的模拟滤波器,然后将设计好的模拟滤波器转换成满足给技术指标的数字拨器。在MATLAB的数字信号处理工具箱中提供了相应的设计函数,常用的有: 1.Butterworth
2、数字和模拟 [N,Wn]=buttord() 输入参数:是对归一化后的通带截止频率,是对归一化后的阻带截止频率,Rp是通带最大衰减,Rs是阻带最小衰减,且Rp,Rs的单位为分贝(dB)。 输出参数:N是符合要求的数字滤波器的最小阶数,Wn为Butterworth滤波器的3d B。 [N,Wn]=buttord() 输入参数:是模拟滤波器的通带截止频率,是模拟滤波器的阻带截止频率,它们的单位是弧度/秒;Rp是通带最大衰减,Rs是阻带最小衰减。 输出参数:N是符合要求的模拟滤波器的最小阶数,Wn是Butterworth滤波器的3dB。 2.零极点增益模型到传递函数模型的转换函数 [
3、num,den]=zp2tf(z,p,k) 输入参数:z,p,k分别边式零极点增益模型的零点矢量,极点矢量和增益。 输出参数:num,den分别为传递函数分子和分母的多项式系数。 3.低通到低通模拟滤波器的转换函数 [b,a]=lp2lp(Bap,Aap,Wn) 输入参数Bap和Aap分别是低通原形模拟滤波器系统函数的分子和分母多项式系数 输出参数:b和a分别是截止频率为Wn的低通模拟滤波器传递函数的分子分母多项式系数。 功能:把模拟滤波器原形转换成截止频率为Wn的低通模拟滤波器。 4.双线性变换函数 [bz,az]=bilenear(b,a,,Fs); 输入参数:b,a分
4、别是模拟滤波器传递函数的分子和分母的多项式系数,Fs是取样频率。 输出参数:bz,az,分别是数字滤波器系统函数的分子和分母的多项式系数。 功能:把模拟滤波器的零极点模型转换成数字滤波器的零极点模型。 5.Butterworth数字和模拟滤波器设计函数 [b,a]=butter(n,Wn,’ftype’) 输入参数:n和Wn分别是所要设计的数字Butterworth滤波器阶数和截止频率参数。参数ftype确定了滤波器的形式;ftype缺省时,Wn为一个元素,则为低通,Wn为两个元素的矢量,则为带通;ftype为high时,则为高通;ftype为stop时,则为带阻。 输出参数:b,
5、a分别是所要设计的滤波器系统函数的分子和分母的多项式系数。 功能:设计一个阶数为n,截止频率参数为Wn的数字滤波器 [b,a]=butter(n,Wn,’ftype’,’s’) 输入参数:n和Wn 分别是所要设计的模拟滤波器阶数和截止频率参数,Wn的单位为弧度/秒;参数ftype同上。 输出参数:b,a分别是所要设计的模拟滤波器传递函数的分子和分母的多项式系数。 功能:设计一个阶数为n,截止频率为Wn的模拟滤波器。 6.计算 buttworth低通原型模拟滤波器的零极点和增益函数 [z,p,k]=buttap(N) 输入参数:N边式Butterworth低通原型模拟滤波器的阶数
6、 输出参数:z,p,k分别是N阶Butterworth低通滤波器的零极点增益模型的零极点矢量,极点矢量和增益。 三、实验程序 实验内容: (1) 编写用双性变换法设计巴特沃兹低通IIR数字滤波器的程序,要求通带内频率低于0.2rad时,容许幅度误差在1dB之内,频率在rad 到rad 之间的阻带衰减大于1dB。 (2) 用双线性变换法设计Butterworth低通IIR数字滤波器,要求使用buttord,butter和bilinear函数。滤波器技术指标:取样频率1Hz,通带内临界频率0.2Hz,通带内衰减小于1dB;阻带临界频率0.3Hz,阻带内衰减大于25dB。 (3) 以
7、 为取样间隔,在屏幕上打印出数字滤波器的频率区间[] 上的幅频响应特性曲线或 。 (4) 在屏幕上打印出H(z)的分子,分母多项式系数。 实验程序: 1 wp=2*pi*0.3*pi;ws=2*pi*pi;Ap=0.2*pi;As=1; [N,wc]=cheb2ord(wp,ws,Ap,As,'s') [num,den]=cheby2(N,As,wc,'s') omega1=linspace(0,wp,500); omega2=linspace(wp,ws,200); omega3=linspace(ws,5*1000*pi*2,500); H1=20*log
8、10(abs(freqs(num,den,omega1))); H2=20*log10(abs(freqs(num,den,omega2))); H3=20*log10(abs(freqs(num,den,omega3))); fprintf('Ap = %.4f\n',max(-H1)) fprintf('As = %.4f\n',min(-H3)); plot([omega1,omega2,omega3]/(2*pi),[H1,H2,H3]) 结果及图形: N =1 wc =7.6374 num = 0 15.0091 den =1.0000 15.0091
9、Ap = 0.6283 As = 4.3610 2.3.4 wp=0.2*2*pi ws=0.3*2*pi; Rp=1; Rs=25; Fs=1; Ts=1/Fs; wp1=wp*Ts; ws1=ws*Ts; wp2=2*Fs*tan(wp1/2); ws2=2*Fs*tan(ws1/2); [N,Wn]=buttord(wp2,ws2,Rp,Rs,'s'); [Z,P,K]=buttap(N); [Bap,Aap]=zp2tf(Z,P,K); [b,a]=lp2lp(Bap,Aap,Wn); [bz,az]=bilinear(b,a,Fs);
10、 [H,W]=freqz(bz,az); subplot(2,1,1); plot(W/pi,abs(H)); grid Xlabel('频率') Ylabel('幅度') Subplot(2,1,2); plot(W/pi,20*log10(abs(H))); grid; Xlabel('频率') Ylabel('幅度(dB)') wp=0.2*2*pi ws=0.3*2*pi; Rp=1; Rs=25; Fs=1; Ts=1/Fs; wp1=wp*Ts; ws1=ws*Ts; wp2=2*Fs*tan(wp1/2); ws2=2*Fs*t
11、an(ws1/2); [N,Wn]=buttord(wp2,ws2,Rp,Rs,'s'); [Z,P,K]=buttap(N); [Bap,Aap]=zp2tf(Z,P,K); [b,a]=lp2lp(Bap,Aap,Wn); [bz,az]=bilinear(b,a,Fs); [H,W]=freqz(bz,az); subplot(2,1,1); plot(W/pi,abs(H)); grid Xlabel('频率') Ylabel('幅度') Subplot(2,1,2); plot(W/pi,20*log10(abs(H))); grid; Xlabel('频率') Ylabel('幅度(dB)') 结果及图形: wp =1.2566 四、实验小结 五、教师评语 教师签字: 年 月 日






