自学内容网 自学内容网

信号系统之递归滤波器

1 递归方法

输入信号:x[n],x[n-1],x[n-2],…
输出信号:y[n],y[n-1],y[n-2],…

算法采用下式计算:

换句话说,输出信号中的每个点都是通过将输入信号的值乘以“a”系数,将先前计算的输出信号值乘以“b”系数,然后将乘积相加来找到的。

注意, b 0 b_0 b0 没有值,因为这与正在计算的样本相对应。方程 19-1 称为递归方程,使用它的过滤器称为递归过滤器(recursive filters)。定义滤波器的“a”和“b”值称为递归系数(recursion coefficients)。在实际操作中,可以使用不超过十几个递归系数,否则滤波器会变得不稳定(即输出不断增加或振荡)。

表 19-1 显示了一个递归过滤器程序示例:

递归滤波器很有用,因为它们绕过了更长的卷积。例如,考虑当增量函数通过递归过滤器时会发生什么情况。输出是滤波器的脉冲响应,通常是呈指数衰减的正弦振荡。由于这种脉冲响应在无限长范围内,递归滤波器通常称为无限脉冲响应(IIR)滤波器。实际上,递归滤波器使用很长的滤波器内核对输入信号进行卷积。

递归系数和滤波器响应之间的关系由一种称为 z 变换的数学技术给出。例如,z变换可用于以下任务:在递归系数和频率响应之间进行转换,将级联和并行级合并到单个滤波器中,设计模拟模拟滤波器的递归系统等。

2 单极递归滤波器

图 19-2 显示了所谓的单极点(single pole)低通滤波器的示例。此递归滤波器仅使用两个系数, a 0 = 0.15 a_0=0.15 a0=0.15 b 1 = 0.85 b_1=0.85 b1=0.85。在本例中,输入信号为阶跃函数。正如低通滤波器所期望的那样,输出平滑上升到稳态电平。这种低通递归滤波器完全类似于由单个电阻器和电容器组成的电子低通滤波器。

递归方法的美妙之处在于它能够通过仅更改几个参数来创建各种响应。例如,图 19-3 显示了具有三个系数的滤波器: a 0 = 0.93 a_0=0.93 a0=0.93 a 01 = − 0.93 a_{01}=-0.93 a01=0.93 b 1 = 0.86 b_1=0.86 b1=0.86。如类似的阶跃响应所示,该数字滤波器模仿电子RC高通滤波器。这些系数可以从这些简单的方程中找到:

这些滤波器的特征由参数 x 控制,x 是介于 0 和 1 之间的值。从物理上讲,x 是相邻样品之间的衰变量。例如,图 19-3 中的 x 为 0.86,这意味着输出信号中每个样本之前的值是 0.86。x 的值越高,衰减越慢。如果 x 大于 1,则过滤器将变得不稳定。也就是说,输入上的任何非零值都会使输出增加,直到发生溢出。

x 的值可以直接指定,也可以从过滤器的所需时间常数中找到。正如 R×C 是 RC 电路衰减到其最终值的 36.8% 所需的秒数一样,d 是递归滤波器衰减到同一水平所需的样本数:

例如,样品间衰减对应于样品的时间常数(如图 19-3 所示)。x与数字滤波器的-3dB截止频率 f C f_C fC 之间也存在固定关系:

这提供了三种方法来查找“a”和“b”系数,从时间常数、截止频率开始,或者直接选择 x。

图19-4显示了使用单极递归滤波器的示例。在(a)中,原始信号是一条平滑的曲线,除了高频正弦波的突发。图(b)显示了通过低通和高通滤波器后的信号。信号分离得相当好,但并不完美,就像在模拟信号上使用简单的RC电路一样。

图19-5显示了各种单极递归滤波器的频率响应。这些曲线是通过滤波器传递增量函数来找到滤波器的脉冲响应而获得的。然后使用FFT将脉冲响应转换为频率响应。原则上,脉冲响应是无限长的;然而,在大约 15 到 20 个时间常数后,它会衰减到低于单精度舍入噪声。例如,当滤波器的时间常数为样本时,脉冲响应可以包含在大约 128 个样本中。

图19-5中的关键特征是,单极递归滤波器几乎无法将一个频段与另一个频段分开。换句话说,它们在时域中表现良好,而在频域中表现不佳。通过级联几个阶段,可以略微改善频率响应。这可以通过两种方式实现:

  • 首先,信号可以通过滤波器多次。
  • 其次,z变换可用于查找将级联组合成一个阶段的递归系数。

这两种方式都有效且常用。图(c)显示了四个低通滤波器级联的频率响应。虽然阻带衰减明显改善,但滚降仍然很糟糕。

四级低通滤波器可与布莱克曼滤波器和高斯滤波器相媲美,但执行速度要快得多。四级低通滤波器的设计公式为:

3 窄带滤波器

电子器件和DSP的常见需求是将窄频带与宽带宽信号隔离开来,例如希望消除仪器系统中的 60 赫兹干扰,或隔离电话网络中的信令音。有两种类型的频率响应可供选择:带通和带阻(也称为陷波滤波器 notch filter)。图 19-6 显示了这些滤波器的频率响应,递归系数由以下公式提供:

在使用这些公式之前,必须选择两个参数:中心频率和带宽(在 0.707 振幅下测量)。这两者都表示为采样频率的分数,因此必须介于 0 和 0.5 之间。根据这两个指定值,计算中间变量:R 和 K,然后计算递归系数。

如(a)所示,带通滤波器具有从主峰延伸的相对较大的尾部。这可以通过级联几个阶段来改善。由于设计方程很长,因此通过多次滤波信号来实现这种级联更简单,而不是试图找到单个滤波器所需的系数。

图(b)显示了带阻滤波器的示例。单精度可获得的最窄带宽约为采样频率的0.0003。当超过此限制时,缺口的衰减会降低。图(c)显示了带阻滤波器的阶跃响应。有明显的过冲和振铃,但其振幅很小。这使得滤波器能够消除窄带干扰(60 Hz等),而时域波形仅略有失真。

4 相位响应

滤波器可以具有三种类型的相位响应:零相位、线性相位和非线性相位。图 19-7 显示了其中每个示例。如(a)所示,零相位滤波器的特征在于脉冲响应在样本零附近对称。实际形状无关紧要,只是负编号样本是正编号样本的镜像。当对这个对称波形进行傅里叶变换时,相位将完全为零,如(b)所示。

零相位滤波器的缺点是需要使用负编号,使用起来可能不方便。线性相位滤波器是解决这个问题的一种方法。(d)中的脉冲响应与(a)中所示的脉冲响应相同,只是它已转移到仅使用正编号样本。脉冲响应在左右之间仍然是对称的;但是,对称性的位置已从零移位,这种偏移导致相位(e)是一条直线,因此名称为:线性相位。这条直线的斜率与位移量成正比。由于脉冲响应的位移只会在输出信号中产生相同的位移,因此在大多数情况下,线性相位滤波器等同于零相位滤波器

图(g)显示了左右之间不对称的脉冲响应。相应地,相位(h)不是一条直线。换句话说,它有一个非线性相位。

使FIR(有限脉冲响应)滤波器具有线性相位很容易。这是因为脉冲响应(滤波器内核)是在设计过程中直接指定的。只需使滤波器内核具有左右对称性即可。IIR(递归)滤波器并非如此,因为递归系数是指定的,而不是脉冲响应。递归滤波器的脉冲响应在左右之间不对称,因此具有非线性相位

幸运的是,有一种简单的方法可以修改递归滤波器以获得零相位。图 19-8 显示了其工作原理的示例。要滤波的输入信号如(a)所示。图(b)显示了经过单极点低通滤波器滤波后的信号。由于这是一个非线性相位滤波器,因此左右边缘看起来不一样;它们是彼此的倒置版本。如前所述,此递归滤波器是通过从样本 0 开始并处理样本 150 来实现的,并在此过程中计算每个样本。

现在,假设不是从样本 0 移动到样本 150,而是从样本 150 开始,然后移动到样本 0。换言之,输出信号中的每个样本都是根据正在处理的样本右侧的输入和输出样本计算得出的。这意味着递归方程(方程 19-1)更改为:

图(c)显示了这种反向滤波的结果。这类似于在向后运行时间的同时将模拟信号传递到电子 RC 电路中。

反向过滤本身不会产生任何好处;滤波后的信号仍然具有看起来不相似的左右边缘。当正向和反向滤波相结合时,奇迹就会发生。图(d)是正向滤波信号,然后反向再次滤波的结果。这将产生一个零相位递归滤波器。事实上,任何递归滤波器都可以通过这种双向滤波技术转换为零相位。这种性能改进的唯一代价是执行时间和程序复杂性的两倍。

**如何找到整个滤波器的脉冲和频率响应?**每个方向的频率响应幅度相同,而相位在符号上相反。当两个方向组合时,幅度变为平方,而相位则抵消为零。在时域中,这对应于将原始脉冲响应与自身的从左到右翻转版本进行卷积。例如,单极点低通滤波器的脉冲响应是单侧指数。相应双向滤波器的脉冲响应是向右衰减的单侧指数,与向左衰减的单侧指数卷积。通过数学计算,结果证明这是一个双面指数,它向左和向右衰减,具有与原始滤波器相同的衰减常数。

某些应用程序在特定时间仅在计算机中具有部分信号,例如连续交替输入和输出数据的系统。当脉冲响应衰减到四舍五入噪声水平以下时,即大约 15 到 20 个时间常数时,脉冲响应可能会被截断。每个段都需要在左右两侧填充零,以便在双向滤波期间进行扩展。

5 使用整数

单精度浮点是实现这些简单递归滤波器的理想选择。使用整数是可能的,但要困难得多。主要有两个问题:

  • 首先,来自有限位数的舍入误差会降低滤波器的响应,甚至使其不稳定。
  • 其次,递归系数的小数值必须用整数数学来处理。

解决这个问题的方法:

  • 一种方法是将每个系数表示为分数。例如,0.15 变为 19/128。不是乘以 0.15,而是先乘以 19,然后除以 128。
  • 另一种方法是用查找表替换乘法。例如,12 位 ADC 生成的样本值介于 0 和 4095 之间。不是将每个样本乘以 0.15,而是将样本传递到长度为 4096 个条目的查找表。从查找表中获取的值等于输入查找表的值的 0.15 倍。这种方法非常快,但它确实需要额外的内存;每个系数都需要一个单独的查找表。

原文地址:https://blog.csdn.net/mengjizhiyou/article/details/136353847

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!