主要内容

滤波器的实现

卷积与滤波

滤波的数学基础是卷积。对于有限脉冲响应(FIR)滤波器,输出yk滤波运算的关键是输入信号的卷积xk脉冲响应hk

y k l h l x k l

如果输入信号也是有限长度的,可以使用MATLAB实现滤波操作®conv函数。例如,要用三阶平均滤波器过滤一个五样本随机向量,您可以存储xk在向量中xhk在向量中h,并对两者进行卷积:

X = randn(5,1);H = [1 1 1 1]/4;三阶滤波器的长度为4Y = conv(h,x)
Y = -0.3375 0.4213 0.6026 0.5868 1.1030 0.3443 0.1629 0.1787
的长度y1是否比的长度和小x而且h

滤波器和传递函数

滤波器的传递函数是其脉冲响应的z变换。对于FIR滤波器,输出的z变换yYz,为传递函数和的乘积Xz,即输入的z变换x

Y z H z X z h 1 + h 2 z 1 + + h n + 1 z n X z

多项式系数h(1),h(2)、…hn+ 1)对应于an的脉冲响应系数n阶滤波器。

请注意

滤波系数指标取值范围为1 ~ (n+ 1),而不是从0到n.这反映了用于MATLAB向量的标准索引方案。

FIR滤波器也称为全零、非递归或移动平均(MA)滤波器。

对于无限脉冲响应滤波器,传递函数不是多项式,而是有理函数。输入和输出信号的z变换由

Y z H z X z b 1 + b 2 z 1 + ... + b n + 1 z n 一个 1 + 一个 2 z 1 + ... + 一个 + 1 z X z

在哪里b),一个)为滤波系数。在这种情况下,过滤器的阶数为的最大值n而且.带IIR滤波器n= 0也称为全极、递归或自回归(AR)滤波器。IIR滤波器与两者n而且大于零的也称为极点零、递归或自回归移动平均(ARMA)滤波器。首字母缩写AR, MA和ARMA通常应用于与过滤后的随机过程相关的滤波器。

使用过滤器函数

对于IIR滤波器,滤波操作不是由一个简单的卷积描述的,而是由一个可以从传递函数关系中找到的差分方程描述的。假设一个(1) = 1,将分母移到左边,进行z反变换,得到

y k + 一个 2 y k 1 + ... + 一个 + 1 y k b 1 x k + b 2 x k 1 + + b n + 1 x k n

就当前和过去的投入,以及过去的产出而言,yk)是

y k b 1 x k + b 2 x k 1 + + b n + 1 x k n 一个 2 y k 1 一个 + 1 y k

这是数字滤波器的标准时域表示。从y(1)并假设一个零初始条件的因果系统,则表示为

y 1 b 1 x 1 y 2 b 1 x 2 + b 2 x 1 一个 2 y 1 y 3. b 1 x 3. + b 2 x 2 + b 3. x 1 一个 2 y 2 一个 3. y 1 y n b 1 x n + + b n x 1 一个 2 y n 1 一个 n y 1

要实现这个过滤操作,可以使用MATLAB过滤器函数。过滤器将系数存储在两个行向量中,一个用于分子,一个用于分母。例如,解差分方程

y n 0.9 y n 1 x n Y z 1 1 0.9 z 1 X z H z X z

你可以使用

B = 1;A = [1 -0.9];Y = filter(b,a,x);
过滤器给出和输入样本一样多的输出样本,也就是的长度y和的长度一样吗x.的第一个元素一个不是1吗过滤器将系数除以一个(1)在实现差分方程之前。

另请参阅

应用程序

功能