程序输出结果见图14和图15。图14给出了该程序的幅频图、相频图、脉冲响应和阶跃响应。幅频图清楚地给出了的通带范围和阻带范围。图15给出了模拟输入、输出信号的时间域波形及频率域振幅谱。可以看到通过该滤波器处理后,成功地滤除了通带范围之外的信号。但要注意,由该滤波器的相频特性可知,该滤波器并不是线性相位。
4.3 椭圆滤波器
椭圆(Elliptic)模拟低通原型滤波器的平方幅值响应函数为:
H?j??2?A?2???12???1??2EN???c?? (22)
式中,?为小于1的正数,表示波纹情况;?c为低通滤波器的截止频率
??为椭圆函数,其定义已超出(Cutoff frequency),N为滤波器的阶数,EN?????c?本课程的范围,我们直接利用。
椭圆滤波器的特点:在通带和阻带内均具有等波纹起伏特性,与以上滤波器原型相比,相同的性能指标所需的阶数最小,但相频响应具有明显的非线性。
MATLAB信号处理工具箱提供Elliptic模拟低通滤波器原型设计函数ellipap。由于椭圆滤波器通带和阻带均有波纹,因此函数的输入参数中通带波纹和阻带衰减均需给出。该函数调用形式为:
?z,p,k??ellipap?n,Rp,Rs?
式中,n为butterworth滤波器阶数;Rp,Rs分别为通带波纹和阻带衰减,单位dB,通常滤波器的通带波纹的范围为1-5dB,阻带衰减的范围大于15dB。z,p,k分别为滤波器的零点、极点和增益。
图16 椭圆模拟原型滤波器平方幅频图
word文档 可自由编辑
可见阶数为6的椭圆滤波器的过渡带已相当窄(陡),但这种特性的获得是以牺牲通带和阻带的单调平滑特性为代价的。可以看到滤波器的阶数越高平方幅频响应越接近于矩形。 4.3.1 应用举例
设计一个高通椭圆滤波器,设计性能指标为:通带边界频率wp=1500Hz,阻带边界频率ws=1000Hz,通带波纹Rp=1dB,阻带衰减Rs=100dB。假设一个信号
x(t)?3sin2?f1t?0.5cos2?f2t,其中f1=400Hz,f2=1600Hz。信号的采样频率为10000Hz。试将原信号与通过该滤波器的模拟信号进行比较。
wp=1500*2*pi;ws=1000*2*pi;Rp=1;Rs=100; %滤波器设计参数
[N,Wn]=ellipord(wp,ws,Rp,Rs,'s'); %求滤波器的最小阶数和截止频率 w=linspace(1,3000,1000)*2*pi; %给出计算复数频率响应的频率点 [b,a]=ellip(N,Rp,Rs,Wn,'high','s'); %设计高通椭圆滤波器 H=freqs(b,a,w); magH=abs(H);phaH=unwrap(angle(H)); figure(1) plot(w/(2*pi),20*log10(magH)); %以频率为横轴绘幅频响应 xlabel('Frequency/Hz');ylabel('Magnitude/dB'); title('Ellip analog highpass filter'); hold on;plot([1000 1000],ylim); %阻带边界 grid on
figure(2) %给出另一个图形窗口
dt=1/10000; f1=400;f2=1600;%信号中所含频率成分 t=0:dt:0.04;%时间序列
x=3*sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t); %输入信号 H=[tf(b,a)]; [y,t1]=lsim(H,x,t); %模拟输出
subplot(211),plot(t,x),title('Input signal') %绘输入信号 subplot(212),plot(t1,y) %绘制输出信号 title('Output signal'),xlabel('Time/s')
图17 滤波器的幅频响应图
word文档 可自由编辑
图18 滤波器的输入和输出信号
程序运行结果见图17和图18。可见所设计的高通滤波器完全符合要求,在阻带边界下降的分贝数达100dB。并且通带和阻带均有波纹,这正是椭圆滤波器的特点。将该滤波器模拟输入400Hz和1600Hz的信号后,输出结果完全滤除了400HZ低频成分,只含有1600HZ的信号。
4.4 Bessel滤波器
前面讲过的各类原型滤波器均没有绘出其相位随频率的变化特性(相频特性)。在后面的数字信号处理学习中将会看到它们的相位特性是非线性的。本节所介绍的Bessel滤波器就能最大限度地减少相频特性的非线性,使得通带内通过的信号形状不变(拷贝不走样)。
Bessel模拟低通滤波器的特点是在零频时具有最平坦的群延迟,并在整个
??2N?!?通带内群延迟几乎不变。在零频时的群延迟为?N?。由于这一特点,Bessel
?2N!?1N模拟滤波器通带内保持信号形状不变。但数字Bessel滤波器没有平坦特性,因此MATLAB信号处理工具箱只有模拟Bessel滤波器设计函数。
函数besselap用于设计Bessel模拟低通滤波器原型,调用格式为:
?z,p,k??besselap?N?
式中,N为滤波器的阶数,小于25。z,p,k为滤波器的零点、极点和增益。
word文档 可自由编辑
图19 Bessel模拟原型滤波器相频图
可见,Bessel滤波器具有最优的线性相频特点,但这个特点的获得是以牺牲窄过渡带为代价的,即滤波器的幅频平方特性与矩形特性相差甚远。 4.4.1 应用举例
设计一个六阶Bessel低通模拟滤波器,截止频率为2000rad/s,绘制滤波器的频率特性图。假设一个信号x(t)?7sin2?f1t?6cos2?f2t,其中f1=400Hz,f2=1000Hz。信号的采样频率为10000Hz。试将原信号与通过该滤波器的模拟信号进行比较。
N=6; %滤波器阶数 Wn=2000; %边界频率
[b,a]=besself(N,Wn); %设计Bessel滤波器 figure(1)
freqs(b,a); %绘出滤波器的复数频率特性 figure(2)
dt=1/10000; %信号采样间隔 f1=100;f2=1000; %输入两个频率成分 t=0:dt:0.1;
x=7*sin(2*pi*f1*t)+6*cos(2*pi*f2*t); %输入信号 H=[tf(b,a)]; %滤波器在NATLAB系统中的表示 [y,t1]=lsim(H,x,t); %模拟滤波器的输出
subplot(211),plot(t,x),title('Input signal') %绘出输入信号 subplot(212),plot(t1,y) %绘出输出信号 title('Output signal'),xlabel('Time/s')
word文档 可自由编辑