数字滤波器的设计方法是多样的,主要采用直接设计法和经典设计法这种设计方法来进行设计:其一是利用了模拟滤波器的设计方法,其设计方式是首先设计一模拟滤波器然后通过某种方法转换为数字滤波器,此即为模数转换的思想,为经典设计法,这里我将采用脉冲响应不变法和双线性变换法两种设计方式来设计;其二是直接在频域或时域内进行设计,需要借组计算机求解复杂复杂方程以作辅助设计,其设计过程主要是先设计一过渡的模拟滤波器的系统函数,再将该系统函数借助某种方法转换为数字滤波器的系统函数。两种设计方式相比,采用模数转换思想的设计方法即经典设计法更加容易些,主要是因为模拟滤波器的设计方法已比较成熟,设计公式也相当全面,不仅如此,还有了大量图表曲线等资料可供设计使用。
为此我们提出了两点要求,其目的是为保证转换后的数字滤波器稳定且满足最初的设计要求:
(1) 对于一因果稳定的模拟滤波器而言,经模数转换后得到的数字滤波器也应为因果稳定的。
(2) 模拟滤波器所在的S平面应映射到数字滤波器所在Z平面的单位圆上,两者是一一对应的关系,因而模拟滤波器和数字滤波器的频响特性应是相似的。 利用模拟滤波器来设计数字滤波器的主要有以下几个设计步骤:
1) 首先应确定所要设计的数字滤波器及技术指标,包括通带边界频率?p,阻带边界频
率?s,通带所允许的最大衰减?p,阻带所允许的最小衰减?s。
2) 其次将数字滤波器的技术指标通过某种方式转换为模拟滤波器的技术指标。 3) 然后根据得出的模拟滤波器的设计指标来设计过渡的模拟滤波器。
4) 最后应用自己所设计的转换方法将模拟滤波器系统函数Ha(s)转换为数字滤波器的
系统函数。
IIR滤波器的设计流程图如下:
7
数字滤波器 技术指标 变换 ??g(?) 模拟滤波器 技术指标 模拟滤波器 设计方法 数字滤波器 变换 模拟滤波器 H(Z) S?f(Z) Ha(S)
图3.1 设计流图
设计内容:设计一采样频率Fs=1000Hz的IIR数字低通滤波器,要求通带边界频率fp=300Hz,通带最大衰减Rp=1dB,阻带边界频率fs=400Hz,阻带最小衰减Rs=30dB。根据这些参数设计出合理的IIR数字滤波器。
3.2 IIR数字低通滤波器的直接设计法
3.2.1 设计方法及原理
MATLAB数字信号处理工具箱中包含了函数库,拥有大量的函数可供调用,滤波器的设计便可通过调用其中的一些函数来实现,调用这些函数为滤波器的设计提供了极大的便利。其主要设计方法有: 1.零极点累试法
这种方法也称为零极点累试法。在确定零极点位置时要注意: (1)极点必须位于z平面单位圆内,保证数字滤波器因果稳定; (2)复数零极点必须共轭成对出现,保证系统函数有理式的系数是实的。 2.IIR数字滤波器的时域直接设计法
先设计一数字滤波器H(z),采用逼近的方式来进行设计,其目的就是让所设计的滤波器的单位脉冲响应h(n)尽可能的达到所要设计的IIR滤波器的单位脉冲响应的标准。 3.在频域直接设计IIR数字滤波器
频域直接设计是利用幅度平方误差最小的特点来设计数字滤波器。可以MATLAB函数库里有多种函数可供直接调用以此来设计滤波器。
可以通过调用butter()函数来设计Butterworth滤波器,使用这种方法来设计低
8
通,带通,高通,带阻模拟和数字滤波器具有无可比拟的优点,能够使通带内幅度响应达到最大限度的平滑;但也存在不足之处,因为他损失了截频处的下降斜度。 切贝雪夫滤波器有Ⅰ型和Ⅱ型两种,分别调用chebyl()和cheby2()两种函数,同样可以用来设计低通,带通,带阻,高通模拟和数字滤波器,但两者有一定的区别,Ⅰ型等波纹通带,阻带单调,而Ⅱ型正好与此相反,Ⅰ型比Ⅱ型下降斜度大,但Ⅰ型的代价是通带内波纹较大。
可以调用函数ellip()来设计椭圆滤波器,根据滤波的的特性依旧可设计低通、带通、带阻、高通模拟和数字滤波器。与巴特沃斯和切贝雪夫滤波器相比,使用ellip函数所设计的滤波器得到的下降斜度更大一些,得到的通带阻带都应为等波纹。通常,椭圆滤波器可以最低阶实现所需要设计滤波器的性能。
3.2.2 MATLAB设计
Chebyshev I型设计的M程序: Fs=1000;
Flp=300; Fls=400;
Wp=2*Flp/Fs; Ws=2*Fls/Fs; Rp=1; Rs=30;
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs); [b,a]=cheby1(N,Rp,Wn); [hw,w]=freqz(b,a); subplot(2,1,1);
plot(w/pi,20*log10(abs(hw)));grid on; xlabel('ω/π');ylabel('幅度(dB)') title('切比雪夫I型幅频响应'); subplot(2,1,2);plot(w/pi,abs(hw)); grid on;
xlabel('ω/π');ylabel('幅度(H)');
9
运行以后产生以下图形:
切比雪夫I型幅频响应0幅度(dB)-100-200-30000.10.20.30.40.5ω/π0.60.70.80.9110.8幅度(H)0.60.40.2000.10.20.30.40.5ω/π0.60.70.80.91
图3.2 Chebyshev I型的MATLAB仿真
同样,我们也可以设计出Chebyshev II型的M程序: Fs=1000;
Flp=300; Fls=400;
Wp=2*Flp/Fs; Ws=2*Fls/Fs; Rp=1;
Rs=30;
[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs); [b,a]=cheby2(N,Rs,Wn); [hw,w]=freqz(b,a); subplot(2,1,1);
plot(w/pi,20*log10(abs(hw)));grid on; xlabel('ω/π');ylabel('幅度(dB)')
10
title('切比雪夫II型幅频响应'); subplot(2,1,2);plot(w/pi,abs(hw)); grid on;
xlabel('ω/π');ylabel('幅度(H)');
得运行后图形:
切比雪夫II型幅频响应0幅度(dB)-20-40-60-8000.10.20.30.40.5ω/π0.60.70.80.9110.8幅度(H)0.60.40.2000.10.20.30.40.5ω/π0.60.70.80.91
图3.3 Chebyshev II型MATLAB仿真
3.2.3 直接设计法的优缺点
时域直接设计法中采用逼近的方式设计需要求解N+M+1个方程组成的一个方程组,求解比较麻烦,易出错;频域直接设计法中采用迭代方式计算较之更简便些,采用这种算法也是的系统的稳定性和收敛性好,性能良好。
3.3 脉冲响应不变法设计IIR数字低通滤波器
3.3.1 设计方法及原理
用脉冲响应不变法来设计IIR数字低通滤波器,应使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲击响应ha(t),使h(n)正好等于ha(t)的抽样值,即
h(n)=ha(nT)
11