?c??c??p2N(10Rp/10?1)
?s2N(10Rs/10?1)例 设计一个模拟Butterworth滤波器,设计指标为通带边界频率界频率
?c?200?,阻带边
?s?300?,通带波纹1dB,阻带衰减16dB,试确定最小阶数N的截止频率。
(程序
complex4_24)
Wp=200*pi;Ws=300*pi; Rp=1;Rs=16;
N=ceil(log10((10^(Rp/10)-1)/(10^(Rs/10)-1))/(2*log10(Wp/Ws))) ?il函数为向上取整 Wcp=Wp/((10^(Rp/10)-1)^(1/(2*N))) Wcs=Wp/((10^(Rs/10)-1)^(1/(2*N))) 运行结果如下:
N =7
Wcp = 691.9839 Wcs = 483.8194
8.2 滤波器最小阶数选择函数
几种滤波器最小阶数的选择函数如下:
[n,wc]=buttord(wp,ws,Rp,Rs,’s’); %Butterworth滤波器 [n,wc]=cheb1ord(wp,ws,Rp,Rs,’s’); %Chebyshev I滤波器 [n,wc]=cheb2ord(wp,ws,Rp,Rs,’s’); %Chebyshev II滤波器 [n,wc]=ellipord(wp,ws,Rp,Rs,’s’); %Elliptic滤波器
其中,wp为通带边界频率;ws为阻带边界频率,单位为rad/s;Rp、Rs分别为通带波纹和阻带衰减,单位为dB,二者分别表示通带内的最大允许幅值损失和阻带下降的分贝数;’s’表示模拟滤波器(缺省时,该函数适用于数字滤波器);函数返回值n为模拟滤波器的最小阶数;wc为模拟滤波器的截止频率,单位为rad/s;这四个函数适用于低通、高通、带通、带阻滤波器。
若wp
41
带阻滤波器存在两个过渡带,wp和ws均应该为含有两个元素的向量,分别表示两个过渡带的边界频率,即wp=[通带下界频率,通带上界频率],ws=[阻带下界频率,阻带上界频率]。对于通带滤波器,这4个频率界线的大小排列为:阻带下界频率<通带下界频率<通带上界频率<阻带上界频率;对于阻带滤波器,这4个频率界线的大小排列为:通带下界频率<阻带下界频率<阻带上界频率<通带上界频率。这时,返回值wc包括两个元素(第一个元素小于第二个元素),分别为通带和阻带之间的界线频率,函数会自动判断是带通还是带阻滤波器。
例 设计一个模拟低通Butterworth滤波器和Chebyshev II型滤波器,满足通带边界频率
?p?200?,阻带边界频率
?s?300?,通带波纹Rp=1dB,阻带衰减Rs=16dB,试确
定最小阶数N和通带下降3dB的截止频率。(程序complex4_25) 运行结果如下: Butterworth滤波器 N = 7 Wc = 725.7292
Chebyshev II型滤波器 N = 4 Wc = 839.8376
42
九 基于完全设计函数的模拟滤波器设计
MATLAB提供了一组滤波器完全设计函数----butter、cheby1、cheby2、ellip和besself,只需调用这些函数一次,即可完成全部滤波器设计。这些函数不仅适应于模拟滤波器设计,还是用于数字滤波器设计。
9.1 用butter函数设计巴特沃思模拟滤波器
其调用格式为: [b,a]=butter(n,Wn) [b,a]=butter(n,Wn,’ftype’) [b,a]=butter(n,Wn,’s’) [z,p,k]=butter(n,Wn,’ftype’,’s’) [z,p,k]=butter(…) [A,B,C,D]=butter(…)
利用该函数能设计巴特沃思低通、高通、带通和带阻模拟或数字滤波器。
此种滤波器在通带内具有最大的平坦幅度,整体单调下降,但这种平台是以牺牲过渡带的陡度为代价。
参数说明如下:
? n为滤波器阶数(若为带通或带阻滤波器则滤波器阶数为2n)。
? Wn为滤波器截止频率,用于数字滤波器设计时0 用于模拟滤波器设计时,Wn可以大于1,单位为rsd/s。 ? ftype代表滤波器类型,可取如下几个参数: ①’high’:代表所设计的是高通滤波器。 ②’stop’:代表所设计的是带阻滤波器。 ③’s’: 代表是模拟滤波器设计。 ⑴、[b,a]=butter(n,Wn,’s’) 是设计n阶模拟低通滤波器,截止频率为Wn rad/s,该函数返回长度为n+1的A、B两处向量,表示的系统传递函数为: B(s)b1sn?b2sn?1???bns?bn?1H(s)??A(s)a1sm?a2sn?1???ans?an?1 ⑵、[A,B,C,D]=butter(?)返回的是状态装一矩阵A、B、C、D。 如果Wn是一个有两个元素的向量,即Wn=[W1 W2](W1 43 2n阶模拟带通滤波器,通带范围是W1 ⑶、[z,p,k] =butter(n,Wn,’ftype’,’s’)返回n列或者2n列的零极点向量和增益K。 ⑷、[b,a]=butter(n,Wn)和[b,a]=butter(n,Wn,’ftype’)用于数字滤波器的设计。该函数与buttord联合使用可设计最小阶数的巴特沃思模拟滤波器。 例 设计一个巴特沃思带通滤波器,其技术指标为:W1=2000Hz,W2=3000Hz,两侧的过渡带宽为500Hz,通带波纹Rp=1dB,阻带衰减Rs=60dB。(程序complex4_26) 以下程序实现该模拟滤波器设计,滤波器阶数为N=14。 wp=[2000 3000]*2*pi; %性能指标 ws=[1500 3500]*2*pi; Rp=1; Rs=60; [N,Wn]=buttord(wp,ws,Rp,Rs,’s’) %估计滤波器的最小阶数N [b,a]=butter(N,Wn,’s’); %利用butter函数设计滤波器 %outpit Am response w=linspace(1,4000,1000)*2*pi; H=freqs(b,a,w); plot(w/(2*pi),20*log10(abs(H))); xlabel(‘Frequency(Hz)’); ylabel(‘Magnitude(dB)’); title([‘Butterworth Analog bandpass filter order N=’,num2str(N)]) ; grid on; 运行结果如下: N = 14 Wn = 1.0e+004 * 1.2342 1.9192 幅频特性如下: 44 9.2 用cheby1、cheby2函数设计契比雪夫模拟滤波器 ⑴ cheby1函数 其调用格式为: [b,a]=cheby1(n,Rp,Wn) [b,a]=cheby1(n,Rp,Wn,’ftype’) [b,a]=cheby1(n,Rp,Wn,’s’) [b,a]=cheby1(n,Rp,Wn, ’ftype’, ’s’) [z,p,k]= cheby1(…) [A,B,C,D]= cheby1(…) 利用该函数能设计契比雪夫I型低通、高通、带通和带阻模拟或数字滤波器。 此种滤波器在通带内具有等波纹特性,阻带内单调下降。契比雪夫I型滤波器较契比雪夫II型的阻带衰减更快,但阻带内的误差加大。 函数引用中Rp为通带波纹系数,其余参数与butter函数参数意义相同。 例 设计契比雪夫I型高通模拟滤波器,其设计指标为:通带截止频率为2000Hz,过渡带为500Hz,通带波纹系数为Pp=1dB,阻带衰减系数Rs=60dB。(程序complex4_27) 以下程序代码实现了该滤波器设计: wp=2000*2*pi; %性能指标 ws=1500*2*pi; 45