巴特沃兹滤波器 (butterworth)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
巴特沃兹滤波器(Butterworth)
特点:具有通带内最大平坦的振幅特性,且随f↗单调↘
其幅度平方函数具有如下形式:
式中,N为整数,称为滤波器的阶数,N越大,通带和阻带的近似性越好,过渡带也越陡。如下图所示:
图巴特沃兹filter 振幅平方函数
过渡带:通带→阻带间过渡的频率范围,
:截止频率。
Ω
c
理想滤波器的过渡带为O,阻带|H(jΩ)|=0,通带内幅度|H(jΩ)|=常数,H (jΩ)线性相
位。通带内,分母Ω/Ωc<1,相应( Ω/Ωc)2N随N的增加而趋于0,A(Ω2)→1,在过渡带
和阻带,Ω/Ωc>1,随N的增加,Ωe/Ωc>>1,所以A(Ω2)快速下降。
Ω=Ωc时,,幅度衰减,相当于3bd衰减点。
振幅平方函数的极点可写成:
Ha(-s).Ha(s)=
可分解为2N个一次因式令分母为零,→
可见,Butterworth 滤波器的振幅平方函数有2N个极点,它们均匀对称地
的圆周上。
分布在|s|=Ω
c
例:如图为N=3阶Butterworth 滤波器振幅平方函数的极点分布。
图三阶A(-s2)的极点分布
考虑到系统的稳定性, Butterworth 滤波器的系统函数是由s平面左半部分
的极点(S
P3,S
P4
,S
P5
)组成的,它们分别为:
所以系统函数为:
式中是为使S=0时Ha(s)=1而引入的。如用归一化s,即s’=s/Ω
c
,得归一化的三阶BF:
如果要还原的话,则有
关于数字滤波器
滤波器有很多种,讨论下对信号频率具有选择性的滤波器。这又分为模拟滤波器和数字滤波器。模拟滤波器是在传统模拟电路中发展起来的,其实就是RC电路网络。随着数字技术的发展,数字滤波器则越来越受到青睐。
数字滤波器分为递归型和非递归型,所谓递归即滤波器内部存在反馈回路,这种滤波器对单位冲击响应可以延续到无限长的时间,所以也叫IIR (infinite impulse response filter) ;相应的,非递归型即内部不存在反馈,也叫FIR(finite impulse response filter),其传递函数不存在除零点意外的极点。数字滤波器的一般形式为:
a(0)*y(n) = b(0)*x(n) + b(1)*x(n-1) + ... + b(nb)*x(n-nb)
- a(1)*y(n-1) - ... - a(na)*y(n-na)
相应于上面的讨论,则a都为零则为IIR,a 有非零的则为FIR。显然,a(0)=1 方便讨论和设计滤波器,所以在matlab中滤波器设计都是a(0)=1。容易看出,无内部反馈的FIR总是稳定的,具有IIR所没有的特点,但也可以证实,客观模拟电路中,FIR是无法实现的,只有通过数字处理技术设计,而且,要获得性能符合要求的FIR,滤波器的阶数必须设计得非常高,比如,一个常用的矩形窗,一般性能下就要求有100阶左右来拟合,计算代价太大。一般情况下,n
阶IIR与2n阶FIR性能相同。实际情况下,20阶的Butterworth IIR 滤波器可以实现近似理想相位线性。
频率滤波器大概分为带通、带阻、高通、低通。特性不同的模拟滤波器中经典滤波器有Butter worth和Chebyshev。其中,Butterworth滤波器特点是通带处幅值特性平坦,而Cheby shev滤波器则比前者的截至特性要好,但通带处的幅值有振荡。前面提到,对于数字滤波器而言,可以采用不同阶数逼近相应滤波器,滤波器性能还与滤波器的阶数有关,一般而言,阶数越高,则逼近越精确,但计算代价也随之上升,所以性能与代价总需要寻求一个平衡点。对性能要求一定的情况下,如果对频率截至特性没有特殊要求,考虑采用Butterworth IIR滤波器。因为Chebeshev 滤波器的波纹可能大多数情况下不能忍受。
接着我们看看怎么借助Matlab 设计符合我们需求的Butterworth数字滤波器。当然,我们尽可能了解Butterworth Filter 的原理以及可能的话,再了解数字滤波器设计的方法理论,但是,我们不必自己动脑筋根据需求去设计每个系数,Matlab 内建有设计Filter 的函数。这里仅仅讨论Butter,其语法格式为:
[B,A] = butter(N,Wn,S)
其中,N 为要求设计的滤波器阶数,该参数的设定参照前面的讨论,如果没有实时性要求的话,可以定为20 ,实话,慢~相当的慢~;
S 为字符串,表明设计的滤波器类型,low低通/high高通/stop带阻
Wn 为要求的标准化截至频率,单位为rad/sample,如果是带阻滤波器,则Wn为长度为2的向量[w1 w2]。关于标准化的频率计算为:设要求的频率为f(Hz),采样率为Fs(Hz),则Wn = (2*pi*f/Fs)/pi = 2*f/Fs,所以,标准化截至频率在区间[0,1]内。
滤波器设计出来了啦,其实就是两组系数b(i)、a(j),其中,i、j为从0到N的自然数(各位不要挑剔,我印象中新的教材里已经把0归到自然数里了)。对应上面滤波器一般形式里的参数,前面已经提到,一般a(0)=1。
滤波器既然设计出来了,理应对其性能进行分析,以检验其是否能达到预期的效果。可以使用Matlab 提供的内建函数freqz,可以求得滤波器系统的频率
相应特性。其使用语法格式为:
[H,F] = freqz(B,A,N,Fs)
其中
B/A 提供滤波器系数
N 表示选取单位圆的上半圆等间距的N个点作为频响输出;
Fs 为采样频率,该参数可以省略
H 为N个点处的频率响应复值输出向量,其模即为频响幅值曲线幅值20log10(abs(H))DB,其幅角angle(H)即为频响相位曲线相位值。
F 为与第N点处对应的频率值f(Hz),如果Fs 参数省略时,则频率值w为rad/sample,w = 2*pi*f/Fs
有了这组系数,就可以按照前面的滤波器一般形式的表达式对数据进行依次求值了,也就是滤波计算了。不过,别忙,其实Matlab里已经内建了滤波器函数filter,其语法格式为:
Y = filter(B,A,X)
其中
B/A 提供滤波器系数,X为滤波前序列,Y为滤波结果序列。
设计合适的滤波器对待分析处理的信号进行滤波预处理,可以有效的去除信号中的噪音以及非目标频段信号,从而使得信号背景干净,突出信号本身,提高目标处理的算法有效性,降低算法难度。例如,对语音信号,可以去除大多数的辅音以及高频共振峰。