信号系统之移动平均滤波器

1 通过卷积实现

移动平均滤波器的工作原理是平均输入信号中的多个点,以产生输出信号中的每个点。在方程式形式中,这样写:

其中是 x 输入信号,y 是输出信号,M 是平均值中的点数。例如,在 5 点移动平均滤波器中,输出信号中的点 80 由下式给出:

作为替代方案,输入信号中的点组可以围绕输出点对称选择

这相当于将方程 15-1 中的 j=0 to M-1,更改为 j=-(M-1)/2 to (M-1)/2。例如,在 10 点移动平均线过滤器中,索引 可以从 0 到 11(单侧平均)或 -5 到 5(对称平均)。对称平均要求 M 为奇数。只有一侧的点,编程稍微容易一些,但会产生输入和输出信号之间的相对偏移。

移动平均滤波器是使用非常简单的滤波器内核的卷积。例如,一个 5 点过滤器的过滤器内核是:…0, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 0…也就是说,移动平均滤波器是输入信号的卷积,其面积为 1 的矩形脉冲。表 15-1 显示了实现移动平均滤波器的程序。

2 降噪与阶跃响应

移动平均滤波器不仅非常适合许多应用,而且是常见问题的最佳选择,可减少随机白噪声,同时保持最敏锐的阶跃响应。

图 15-1 显示了其工作原理的示例。(a)中的信号是隐藏在随机噪声中的脉冲。在(b)和(c)中,移动平均滤波器的平滑作用降低了随机噪声的幅度(好),但也降低了边缘的清晰度(坏)。在所有可能使用的线性滤波器中,移动平均线在给定的边缘锐度下产生的噪声最低。降噪量等于平均值中点数的平方根。例如,一个 100 点移动平均滤波器可将噪声降低 10 倍。

为了理解为什么移动平均线是最佳解决方案,假设想要设计一个具有固定边缘锐度的滤波器。例如,假设通过指定阶跃响应的上升中有 11 个点来修复边缘锐度。这要求过滤器内核有 11 个点。优化问题是:**如何选择滤波器内核中的11个值,以最小化输出信号上的噪声?**由于试图减少的噪声是随机的,因此没有一个输入点是特殊的;每个都和它的邻居一样嘈杂。因此,通过在滤波器内核中为任何一个输入点分配更大的系数来给予它优先处理是没有用的。当所有输入样本(即移动平均滤波器)得到同等处理时,可获得最低噪声。

3 频率响应

图15-2显示了移动平均滤波器的频率响应,它由矩形脉冲的傅里叶变换在数学上描述:

roll-off非常慢,阻带衰减非常可怕。显然,移动平均滤波器无法将一个频带与另一个频带分开。请记住,时域中的良好性能会导致频域中的性能较差,反之亦然。简而言之,移动平均线是一个非常好的平滑滤波器(时域中的动作),但是一个非常糟糕的低通滤波器(频域中的动作)

4 移动平均滤波器的亲戚

在理想情况下,滤波器设计人员只需要处理时域或频域编码信息,而不必在同一信号中混合使用两者。不幸的是,在某些应用程序中,两个域同时重要。移动平均滤波器的亲戚具有更好的频域性能,在混合域应用中非常有用。

多通道移动平均滤波器涉及将输入信号通过移动平均滤波器两次或多次。图 15-3a 显示了由一次、两次和四次传递产生的整个过滤器内核。两次传递等同于使用三角形滤波器核(与自身卷积的矩形滤波器核)。经过四次或更多次传递后,等效滤波器核看起来像高斯(回想一下中心极限定理)。如(b)所示,与单次通路的直线相比,多次通路产生“s”形阶跃响应。(c)和(d)中的频率响应由方程 15-2 乘以每次通过的自身给出。也就是说,每个时域卷积都会导致频谱的倍增。

移动平均滤波器的这些亲戚如何比移动平均滤波器本身更好?三种方式:

  • 首先,也是最重要的一点,这些滤波器比移动平均滤波器具有更好的阻带衰减
  • 其次,滤波器内核在末端附近逐渐变细到较小的振幅。回想一下,输出信号中的每个点都是来自输入的一组样本的加权和。如果滤波器内核逐渐变细,则输入信号中较远的样本的权重低于靠近的样本。
  • 第三,阶跃响应是平滑曲线,而不是移动平均线的突然直线。后两者通常好处有限。

移动平均滤波器及其相关滤波器在降低随机噪声的同时保持尖锐的阶跃响应方面都大致相同。歧义在于如何测量阶跃响应的上升时间。如果上升时间是从步长的 0% 到 100% 测量的,则移动平均滤波器是可以做的最好的,如前所述。相比之下,测量从 10% 到 90% 的上升时间使 Blackman 窗口优于移动平均滤波器。

这些过滤器的最大区别是执行速度。它是目前最快的数字滤波器。移动平均线的多次传递会相应变慢,但仍然非常快。相比之下,高斯滤波器和Blackman滤波器的速度非常慢,因为它们必须使用卷积。考虑过滤器内核中点数的 10 倍(基于乘法比加法慢约 10 倍)。例如,使用递归,预计 100 点的高斯比移动平均线慢 1000 倍。

5 递归实现

移动平均滤波器的一个巨大优势是它可以使用非常快速的算法来实现。要理解这一点,想象一下将输入信号 x[] 传递到一个七点移动平均滤波器,形成一个输出信号 y[]。现在看看两个相邻的输出点 y[50] 和 y[51] 是如何计算的:

这些计算几乎相同;必须为 y[50] 添加点 x[48] 到 x[53],并为 y[51] 再次添加点。如果已经计算了 y[50],则计算 y[51] 的最有效方法是:

一旦使用 y[50] 找到 y[51],就可以从样本 y[51] 计算 y[52],依此类推。在 y[] 中计算第一个点后,所有其他点都可以找到,每个点只有一个加法和减法。这可以用等式表示:

注意,此公式使用两个数据源来计算输出中的每个点:来自输入的点和先前从输出中计算的点,这称为递归方程(recursive equation),这意味着一次计算的结果用于未来的计算。

移动平均递归滤波器与典型的递归滤波器有很大不同。特别是,大多数递归滤波器具有无限长脉冲响应(infinitely long impulse response,IIR),由正弦波和指数组成。移动平均线的脉冲响应是矩形脉冲(有限脉冲响应,或finite impulse response,FIR)。

由于多种原因,该算法比其他数字滤波器更快:

  • 首先,无论滤波器内核的长度如何,每个点只有两次计算
  • 其次,加法和减法是唯一需要的数学运算,而大多数数字滤波器需要耗时的乘法。
  • 第三,索引方案非常简单。方程 15-3 中的每个索引都是通过添加或减去可以在过滤开始之前计算的整数常量(即 p 和 q)找到的。
  • 第四,整个算法可以用整数表示来执行。根据所使用的硬件,整数可能比浮点快一个数量级以上。
  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值