近年来,随着MATLAB的功能日益便捷和完善,信号处理以及数字滤波器设计得到了广泛应用.比如基础的IIR(无限长响应)滤波器和FIR(有限长响应)滤波器都由以前的传统解析设计向程序开发、函数调用,甚至直接使用面向对象的GUI设计工具转变.整个滤波器的设计得以变得简单高效.
关于基于MATLAB的数字滤波器设计的文献书籍有很多,然而滤波器设计的过程应该有两大任务:一是根据设计要求给出的各项技术指标按照理论步骤设计得出相应的系统函数;二是要对设计出的滤波器进行性能的分析,以达到对结果检验的目的.本文主要探讨第二个任务,分析计算数字滤波器的脉冲响应、频率响应、零点分布、群延时和相延时等,从中考察性能的适应性.
1 性能分析的理论基础
1.1 脉冲响应和频率响应
脉冲响应是用时间序列表征的系统特性,当系统的输入为脉冲序列时,系统零状态的输出定义为脉冲响应,记为h(n).它与系统具有一一对应的关系,所以可以用它来代表系统的时域特性.从脉冲响应可以判断系统的因果性和稳定性.充要条件如下:因果性h(n)=0 n<0;稳定性为h(n)绝对可和.此外从脉冲响应也可看出数字滤波器的种类是属于IIR还是FIR、
频率响应是在频率域对系统进行了表征、直观的反映了滤波器输出在频率范围的分布情况,可以看出滤波器的功能类型(低通、高通、带通、带阻),检验滤波效果非常方便.
在MATLAB 中有对应的分析函数:
(1) [h,t]=impz(b,a,n,fs):计算滤波器的脉冲函数。h为n点脉冲响应向量;
(2) [h,x]=freqz(b,a,n,fs):调用FFT(快速傅立叶变换)计算滤波器的频率响应.Fs为采样频率,可以计算滤波器在任意频率点f上的频响.
1.2 系统函数零、极点分布与系统特性的关系
因果(可实现)系统其单位脉冲相应h(n)一定满足:当n<0时,h(n)=0,那么其系统函数H(z)的收敛域一定包含∞点,即∞点不是极点,极点分布在某个圆内,收敛域在某个圆外.系统稳定要求Σ|h(n)|(n从-∞到 ∞)<∞,对照Z变换定义,系统稳定要求收敛域包含单位圆.
所以如果系统因果且稳定,收敛域包含∞点和单位圆,那么收敛域可表示成r<|z|≤∞,0<r<1,即H(z)的极点集中分布在单位圆的内部.由此,系统的因果性和稳定性可以由系统函数的极点分布来确定.
图1 频率响应几何表示法
如图1所示,利用频率响应的几何表示法,可以很容易地确定零极点位置对系统特性的影响.当B点转到极点附近时,极点矢量长度最短,因而幅度特性可能出现峰值,而且极点越靠近单位圆,极点矢量长度越短,峰值越高越尖锐。如果极点在单位圆上,则幅度特性为∞,系统不稳定.对于零点,情况相反,当B点转到零点附近时,零点矢量长度最短,因而幅度特性出现谷值,越靠近单位圆,谷值接近零值。当零点在单位圆上时,谷值为零.所以只要能得到零极点的分布情况就能分析出频响的曲线形状.
在MATLAB中有对应的分析函数:zplane(绘制H(z)的零极点图),格式:zplane(B,A). 图中0表示零点,用x表示极点.
其他的性能参数在这里就不再累牍叙述.
2 仿真分析与结果
在MATLAB环境下对上述的分析进行仿真,我们可以得到直观的结果.以某一数字滤波器设计得到的系统函数为例,H(Z)=z(z 1)/(z-4)(z 0.6),源程序如下:
b=[1,1];a=[1,0.2,-0.24]; % 滤波器函数系数
impulse=[1,zeros(1,9)];
h=filter(b,a,impulse);subplot(3,2,1);stem(h); %绘制脉冲响应
subplot(3,2,2);impz(b,a,10);
[h,w]=freqz(b,a); %绘制频率响应
subplot(3,2,3);plot(w,20*log10(abs(h))); %幅频曲线
subplot(3,2,5);plot(w,angle(h)*180/pi);
%相频曲线
subplot(3,2,4);zplane(b,a);
%零极点分布图
pd=-unwrap(angle(h))./w;
gd=grpdelay(b,a);
subplor(3,2,6);plot(w,gd,'-',w,pd,':');
%计算延时
程序执行结果如图2:
图2 幅频、相频曲线,零点、极点分布图
3 结束语
从以上理论分析和MATLAB仿真结果图2可以得出以下结论:
此系统函数表征的是一IIR 的数字低通滤波器,它的极点都分布在单位圆的内部即为因果稳定的系统.根据实际情况,还可以进一步分析获取其他的性能.这样的性能分析既是设计过程的必要步骤,也是实验设备不足的情况下学习相关知识很好的方法.