当前位置:首页 > matlab在信号与图像处理中的应用第6章
6.2 IIR滤波器设计
例6-7设计一个8阶低通ChebyshevⅠ型滤波器,要求通带波纹1dB,截止频率300Hz,给定采样频率1000Hz。
% cheby1函数设计低通滤波器 fs = 1000; n = 8; Rp = 1;
Wn = 300*2/fs;
[b,a] = cheby1(n,Rp,Wn,'low') m = 256;
freqz(b,a,m,fs)
程序运行结果如图6-2所示,与butter函数设计的低通滤波器频率响应对比,当阶数相同时,ChebyshevⅠ型滤波器在阻带内下降较快。
图6-2 利用cheby1函数设计的低通滤波器频率响应
3. cheby2函数
cheby2函数用于设计ChebyshevⅡ型数字滤波器,该类型滤波器的频率响应特性在通带内单调下降,在阻带为等波纹。其调用格式如下: ? [b,a] = cheby2(n,Rs,Wn)
? [b,a] = cheby2(n,Rs,Wn,'ftype') ? [z,p,k] = cheby2(n,Rs,Wn)
? [z,p,k] = cheby2(n,Rs,Wn,'ftype') ? [A,B,C,D] = cheby2(n,Rs,Wn)
? [A,B,C,D] = cheby2(n,Rs,Wn,'ftype')
在格式中,参量Rs为阻带衰减,单位dB,截止频率Wn处的通带波纹幅度为-RsdB,其余参量同函数butter。
提示:截止频率Wn仍是归一化之后的频率
例6-8设计一个8阶高通ChebyshevⅡ型滤波器,要求阻带衰减20dB,截止频率200Hz,给定采样频率1000Hz。
% cheby2函数设计高通滤波器 freqz(b,a,m,fs) fs=1000;
n=8;
9
第6章 数字滤波器设计与实现
Rs=20;
Wn=200*2/fs;
[b,a]=cheby2(n,Rs,Wn,'high') m=256;
freqz(b,a,m,fs)
程序运行结果如图6-3所示,ChebyshevⅡ型滤波器的频率响应在阻带内为等波纹。
图6-3 利用cheby2函数设计的高通滤波器频率响应
4. ellip函数
ellip函数用于设计椭圆数字滤波器,相对于Butterworth滤波器和Chybeshev滤波器而言,椭圆滤波器具有更陡峭的滚降特性,即在给定的阶数和波纹要求下,椭圆滤波器能够获得最窄的过渡带宽,但在通带和阻带内都为等波纹形式。其调用格式如下: ? [b,a] = ellip(n,Rp,Rs,Wn)
? [b,a] = ellip(n,Rp,Rs,Wn,'ftype') ? [z,p,k] = ellip(n,Rp,Rs,Wn)
? [z,p,k] = ellip(n,Rp,Rs,Wn,'ftype') ? [A,B,C,D] = ellip(n,Rp,Rs,Wn)
? [A,B,C,D] = ellip(n,Rp,Rs,Wn,'ftype')
函数参量Rp为通带波纹,Rs为阻带衰减,单位都是dB,其余参量同butter函数。
提示:截止频率Wn仍是归一化之后的频率
例6-9设计一个8阶低通椭圆滤波器,要求阻带衰减40dB,通带波纹3dB,截止频率300Hz,给定采样频率1000Hz。
% ellip函数设计高通滤波器
fs=1000; n=8; Rs=40; Rp=3;
Wn=300*2/fs;
[b,a]=ellip(n,Rp,Rs,Wn,'low') m=256;
freqz(b,a,m,fs)
程序运行结果如图6-4所示,可见椭圆滤波器的过渡带较Butterworth和Chebyshev滤波
1 0
6.2 IIR滤波器设计
器都要窄很多,但在通带和阻带内都为波纹状。
图6-4 利用ellip函数设计的低通滤波器频率响应
6.2.1.2 变换函数
除了上面的几种完全设计函数之外,还可以通过变换函数完成基于模拟原型方法的数字滤波器设计。这里主要包括以下几个部分:
? 选择滤波器的阶数; ? 设计模拟原型滤波器 ? 模拟域频率变换;
? 模拟滤波器到数字滤波器的变换
接下来将对实现以上每个部分功能的函数进行逐一介绍,最后再通过几个综合的例子展示如何基于变换函数的方法完成一个数字滤波器设计。
提示:滤波器阶数选择也可与完全设计函数相结合,设计数字滤波器。
1. 滤波器阶数的选择函数
阶数选择函数用来计算一个模拟滤波器或数字滤波器满足设计指标的最小阶数。针对上面提到的几种常见模拟滤波器类型,分别对应不同的选择函数来确定滤波器的阶数:
? 选择Butterworth滤波器阶数的函数buttord
? 选择ChebyshevⅠ型滤波器阶数的函数cheb1ord ? 选择ChebyshevⅡ型滤波器阶数的函数cheb2ord ? 选择椭圆滤波器阶数的函数ellipord 以上四个函数的调用格式分别如下: ? [n,Wn] = buttord(Wp,Ws,Rp,Rs) ? [n,Wn] = buttord(Wp,Ws,Rp,Rs,’s’) ? [n,Wn] = cheb1ord(Wp,Ws,Rp,Rs) ? [n,Wn] = cheb1ord(Wp,Ws,Rp,Rs,’s’) ? [n,Wn] = cheb2ord(Wp,Ws,Rp,Rs) ? [n,Wn] = cheb2ord(Wp,Ws,Rp,Rs,’s’)
11
第6章 数字滤波器设计与实现
[n,Wn] = ellipord(Wp,Ws,Rp,Rs) ? [n,Wn] = ellipord(Wp,Ws,Rp,Rs,’s’)
格式当中的输入参量Wp为通带截止频率,Ws为阻带截止频率,Rp为通带波纹,Rs为阻带衰减,Rp和Rs单位都是dB。‘s’表示模拟滤波器设计,缺省为数字滤波器设计。返回值n是求出的滤波器最小阶数,Wn为3dB频率。
?
提示:Wp和Ws都是归一化的频率,1值对应奈奎斯特频率,并且Wn与Wp和Ws是不同的。
例6-10设计一个低通ChebyshevⅠ型滤波器,要求阻带衰减至少50dB,通带波纹小于3dB,通带截止频率200Hz,阻带截止频率300Hz,给定采样频率1000Hz。
% cheb1ord函数选择滤波器阶数 fs = 1000;
Wp = 200*2/fs; Ws = 300*2/fs; Rp = 3; Rs = 50;
[n,Wn] = cheb1ord(Wp,Ws,Rp,Rs) [b,a] = cheby1(n,Rp,Wn); freqz(b,a,256,fs)
程序运行结果如图6-5所示。
图6-5 利用cheb1ord阶数选择函数辅助设计的低通ChebyshevⅠ型滤波器频率响应
2. 设计模拟原型滤波器的函数
在给定了滤波器阶数和相关特性指标之后,可利用该类函数设计出相应的模拟原型滤波器的系统函数,这类函数包括:
? Butterworth模拟低通滤波器原型函数buttap
? ChebyshevⅠ型模拟低通滤波器原型函数cheb1ap ? ChebyshevⅡ型模拟低通滤波器原型函数cheb2ap ? 椭圆模拟低通滤波器原型函数ellipap 以上四个函数的调用格式分别为: ? [z,p,k] = buttap(n)
? [z,p,k] = cheb1ap(n,Rp)
1 2
共分享92篇相关文档