实验三 IIR数字滤波器设计及实现

  • 格式:docx
  • 大小:49.99 KB
  • 文档页数:6

实验三 IIR数字滤波器设计及实现

一、实验目的

(1)熟悉用脉冲响应不变法和双线性变换法设计IIR数字滤波器的原理与方法;

(2)学会调用MATLAB信号处理工具箱中滤波器设计函数设计IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。

二、实验原理

设计IIR数字滤波器一般采用脉冲响应不变法和双线性变换法。

1. 脉冲响应不变法的变换原理与步骤

从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应模仿模拟滤波器的冲击响应,即h(n)是ha(t)的采样值。

设T 为采样周期,变换过程:

如果模拟滤波器的系统函数只有单阶极点,且分母的阶数高于分子阶数,用脉冲响应不变法求数字滤波器的系统函数有简便方法:将 Ha(s)

展成部分分式的并联形式,再利用下述变换公式直接写出 H(z)

2. 双线性变换法的变换原理和步骤

(1)保证s平面压缩到s1平面的宽为2π/T 的横带内

(2)保证低频部分基本对应

根据要求,确定数字滤波器指标。如是模拟频率临界点,则要先转变)()()()(zHnhthsHZTnTtaILTa1111)( )(zeTAzHssAsHTskNkkkNkak)2tan()2tan(1CTCTCTCTC2 2)2tan(11成数字频率,以便预畸变处理。将数字指标转换成与Ha(s)对应的模拟性能指标。

设计模拟滤波器的系统函数Ha(s) 。将映射关系代入Ha(s)中得数字滤波器系统函数H(z) 。

由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理。设采样频率为Fs,归一化频率的计算公式是:

2/)()/(FsHzFssrad实际模拟频率实际数字频率实际模拟角频率归一化频率

利用典型法设计数字滤波器的步骤:

1、将设计指标归一化处理。如果采用双线性变换法,还需进行预畸变。

2、根据归一化频率,确定最小阶数N和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord,ellipord等。

3、运用最小阶数N设计模拟低通滤波器原型。模拟低通滤波器的创建函数有:buttap, cheblap, cheb2ap, ellipap和besselap,这些函数输出的是零极点增益形式,还要用zp2tf函数转换成分子分母多项式形式。如果想根据最小阶数直接设计模拟低通滤波器原型,可用butter, chebyl, cheby2, ellip, bessel等函数,只是注意要将函数中的Wn设为1。

4、根据第2步的频率参数Wn,将模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可用函数分别是:lp21p, lp2hp,

lp2bp, lp2bs。

5、运用脉冲响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,调用的函数是impinvar和bilinear。脉冲响应不变法适用于采样频率大于4倍截止频率的锐截止低通带通滤波器,而双线性)2tan(2)2tan(21TTT11112112)()(11zzTHsHzHazzTsa变换法适合于相位特性要求不高的各型滤波器。

6、根据输出的分子分母系数,用tf函数生成H(z)的表达式,再用freqz函数验证设计结果。

三、实验内容及步骤

设计一个butterworth数字低通滤波器,要求通带临界频率fp=3400Hz,阻带临界频率fs=5000Hz,通带内的最大衰减Rp=2dB,阻带内的最小衰减Rs=20db,采样频率Fs=22050Hz。

1、用脉冲响应不变法设计

用脉冲响应不变法设计的m程序如下:

用脉冲响应不变法设计的m程序如下:

clear;close all;clc; % 开始准备

fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs; % 设计指标

W1p=fp/Fs*2; W1s=fs/Fs*2; % 求归一化频率

% 确定butterworth的最小阶数N和频率参数Wn

[N, Wn] = buttord(W1p, W1s, Rp, Rs, 's');

[z,p,k] = buttap(N); % 设计模拟低通原型的零极点增益参数

[bp,ap] = zp2tf(z,p,k); % 将零极点增益转换成分子分母参数

% 上两步也可用[bp,ap]=butter(N,1,'s')直接获取归一化低通原型

[bs,as] = lp2lp(bp,ap,Wn*pi*Fs); % 将低通原型转换为模拟低通

[bz,az] = impinvar(bs,as,Fs) % 用脉冲响应不变法进行模数变换

sys=tf(bz,az,T) % 给出传输函数H(z)

[H,W]=freqz(bz,az,512,Fs); % 生成频率响应参数

plot(W,20*log10(abs(H))); % 绘制幅频响应

grid on; % 加坐标网格

2、用双线性变换法完成上述设计

如果用双线性变换法完成上述设计实例,归一化频率需预畸变处理,公式应修改为:

clear;close all;clc; % 开始准备

fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs; % 设计指标

W1p=2*tan(2*pi*fp*T/2)/pi ;W1s=2*tan(2*pi*fs*T/2)/pi;

% 求归一化频率

% 确定butterworth的最小阶数N和频率参数Wn

[N, Wn] = buttord(W1p, W1s, Rp, Rs, 's');

[z,p,k] = buttap(N); % 设计模拟低通原型的零极点增益参数

[bp,ap] = zp2tf(z,p,k); % 将零极点增益转换成分子分母参数

% 上两步也可用[bp,ap]=butter(N,1,'s')直接获取归一化低通原型 [bs,as] = lp2lp(bp,ap,Wn*pi*Fs); % 将低通原型转换为模拟低通

[bz,az] = bilinear (bs,as,Fs);% 用脉冲响应双线性法进行模数变换

sys=tf(bz,az,T) % 给出传输函数H(z)

[H,W]=freqz(bz,az,512,Fs); % 生成频率响应参数

plot(W,20*log10(abs(H))); % 绘制幅频响应

grid on; % 加坐标网格

四:实验结果分析

利用模拟滤波器设计数字滤波器,就是将设计的模拟滤波器系统函数Ha(s)变换成数字滤波器系统函数H(z)。脉冲响应不变法,会产生频谱混叠。由于脉冲响应是冲激响应的采样,要求模拟滤波器的频谱限带小于折叠频率。实际的滤波器不可能是严格限带,所以设计的数字滤波器不可避免地会产生混叠失真。该法只适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。频率坐标变换是线性的,即ω=ΩT ,如果不考虑频谱混叠现象,该法设计的数字滤波器能很好地重现原模拟滤波器的频率特性。数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好。双线性变换法, 解决了脉冲响应不变法的混叠失真问题。它是一种简单的代数映射关系,设计十分方便。从S平面的Ω到Z平面的ω的映射是非线性关系(因S→S1平面的频率映射非线性),带来了频率和相位失真。S1平面边缘的临界频率点与S平面的频率点不同,需要通过频率预畸加以校正。要求模拟滤波器的幅频响应是分段常数型(一般滤波器均满足)。不适于设计线性相位数字滤波器。