模拟有源滤波器设计的MATLAB实现 下载本文

单调下降,且具有更大衰减特性;阶数愈高,特性愈接近矩形。传递函数没有零点,极点分布在一个椭圆上。

注意,这里所说的零点和极点分布在一个椭圆上为Laplace域中的形式。 MATLAB信号处理工具箱函数cheb1ap设计N阶Chebyshev I型模拟低通滤波器原型。因为Chebyshev I型模拟原型滤波器通带内具有波纹特点,所以在调用时需增加通带波纹所能下降的最低限度Rp(dB)。由于Rp为相对于增益1的下降分贝数,所以该值越小滤波器在通带内越接近1,滤波器的性能越好,通常取值范围为1-5(dB)。此函数的调用格式为:

[z.p,k]=cheb1ap(N,Rp)

式中,N为滤波器的阶数,Rp为通带波纹,单位为dB,z,p,k分别为滤波器的零点、极点和增益。

图12 Chebyshev I型模拟原型滤波器平方幅频图

与Butterworth滤波器相比(图9),可以看到:在相同的阶数下,Chebyshev I型模拟原型滤波器具有更窄(更陡)的过渡带。但这种特性是以牺牲了通带的单调平滑特性(而成为波纹状)为代价的。如果我们不想牺牲通带内的单调平滑特性有无办法设计阶数较小而过渡带较窄的滤波器呢?这就涉及到Chebyshev II型滤波器。

4.2.2 Chebyshev II型滤波器

Chebyshev II型低通模拟滤波器的平方幅值响应函数为: H?j???A?2?2??1?2????1???2CN????c?????1 (21)

word文档 可自由编辑

式中各项参数的意义同上。

Chebyshev II型模拟滤波器的特点是:阻带内具有等波纹的起伏特性,而在通带内是单调、平滑的,阶数愈高,频率特性曲线愈接近矩形。传递函数既有极点又有零点。

Chebyshev II型模拟滤波器零点为[z(1),z(2),?,z(nz)],极点为[p(1),p(2),?,p(np)],滤波器的增益为K。

MATLAB信号处理工具箱提供函数cheb2ap设计N阶Chebyshev II型模拟滤波器的原型。由于Chebyshev II型滤波器阻带内有波纹,通带内单调平滑,则必须给定阻带衰减Rs,前面已经讲过,通带波纹和阻带衰减都是相对于增益1的下降,因此,Rp和Rs越大则与通带增益1的差距越大。因此,阻带衰减Rs越大对应的滤波器滤波效果越好,通常Rs的取值要大于16dB。该函数通常调用格式为:

[z,p,k]=cheb2ap(N,Rs)

式中,N为滤波器的阶数;Rs为阻带波纹,单位dB; z,p,k为滤波器的零极点和增益。

图13 Chebyshev II型模拟原型滤波器平方幅频图

可见Chebyshev II型滤波器在通带内是单调平滑的,而阻带内却出现了波纹。随着滤波器阶数的增高,其幅频特性越接近矩形。

由前面的讲解可知,Butterworth滤波器具有单调平滑的频率特性,但在过渡带宽相同的条件下,所需的滤波器阶数较高(即设计的滤波器滤波速度较慢,成本较高)。而Chebyshev I和II型滤波器在通带或阻带内有波纹出现,但在过渡带宽相同的条件下,所需的滤波器阶数较低(即设计的滤波器滤波速度较快,成本较低)。

word文档 可自由编辑

4.2.3 应用举例

x(t)?sin?2*?*30*t??0.5*cos?2*?*300*t??2*sin?2*?*800*t?为输入信号,设计一个5阶的chebyshev I型带通滤波器,通带波纹3dB,下边界频率500?rad/s,上边界频率1000?rad/s,绘制幅频响应图。给出该滤波器的脉冲响应、阶跃响应。模拟滤波器的输出并给出模拟输入信号和模拟输出信号的Fourier振幅谱。

程序如下:

N=5;Rp=3;w1=500*pi;w2=1000*pi; %滤波器阶数、阻带衰减 [z,p,k]=cheb1ap(N,Rp); %设计Chebyshev I型原型低通滤波器 [b,a]=zp2tf(z,p,k); %转换为传递函数形式 Wo=sqrt(w1*w2); %中心频率 Bw=w2-w1; %频带宽度

[bt,at]=lp2bp(b,a,Wo,Bw); %频率转换 [h,w]=freqs(bt,at); %计算复数频率响应 figure(1)

subplot(2,2,1),semilogy(w/pi,abs(h)); %绘制幅频响应 xlabel('Angular frequency/pi');grid on;title('Magnitude'); subplot(2,2,2),plot(w/pi,angle(h)*180/pi);%绘制相频响应 xlabel('Angular frequency/pi');

ylabel('Phase/^o');grid on;title('Phase angle')

H=[tf(bt,at)]; %在MATLAB中表示此滤波器 [h1,t1]=impulse(H); %绘出系统的脉冲响应图

subplot(2,2,3),plot(t1,h1);xlabel('Time/s');title('Impluse response')

[h2,t2]=step(H); %绘出系统的阶跃响应图

subplot(2,2,4),plot(t2,h2);xlabel('Time/s');title('Step response')

figure(2)

dt=1/2000; t=0:dt:0.1; %给出模拟滤波器输出的时间范围 u=sin(2*pi*30*t)+0.5*cos(2*pi*300*t)+2*sin(2*pi*800*t); subplot(221),plot(t,u) %绘制模拟输入信号

xlabel('Time/s');title('Input signal') [ys,ts]=lsim(H,u,t); %模拟系统的输入u时的输出 subplot(222),plot(ts,ys) %绘制模拟输出信号

word文档 可自由编辑

xlabel('Time/s'),title('Output signal');

subplot(223),plot((0:length(u)-1)/length(u)*4000,abs(fft(u)));%绘输入信号振幅谱

title('Spectra of input signal'),xlabel('Angular frequency/pi') Subplot(224) Y=fft(ys);

plot((1:length(Y))/length(Y)*4000,abs(Y)); %绘制输出信号振幅谱 title('Spectra of output signal') xlabel('Angular frequency/pi')

图14 Chebyshev I型滤波器的幅频响应、相频响应、脉冲相应和阶跃响应

图15 滤波器模拟输入和输出信号的时间域和振幅谱

word文档 可自由编辑