0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

信号处理简介:移动平均滤波器

海阔天空的专栏 • 来源:Mustahsin Zarif • 作者:Mustahsin Zarif • 2025-10-04 18:21 • 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者: Mustahsin Zarif

信号和系统是电气工程的核心概念。利用这两个概念,我们能够模拟信息是如何通过电气元件并被修改的。而且,一旦了解了不同的电气元件如何影响电压等信号,我们就可以设计电路,以任何我们想要的方式控制信号。我们竟然能够使用电阻器、电容器和运算放大器 (op-amps) 等电子元器件组合来模拟积分和微分等数学工具,这着实令人惊叹。

例如以下电路(图1):

图 1:简单的积分电路。(图片来源:Mustahsin Zarif)

进入拉普拉斯 (Laplace) 域,我们可以用以下公式表示电路:

Vout = -(1/s) *(1/RC) *Vin

拉普拉斯域中的 1/s 实际上对应于 积分 !因此,我们得到一个基于运算放大器的积分电路模型。然而,当我们转向现实世界时,系统会一直受到某种形式的随机噪声污染。

我们暂将积分电路放一放,来看一个更简单的示例:电压放大电路的输入输出波形可通过如图 2 所示的示波器进行测量。

图 2:电压放大器的输入和输出波形。(图片来源:Mustahsin Zarif)

在可见正弦波上叠加的随机噪声有多种原因造成,例如因电路在面包上搭建而产生的电气连接不良等问题。这种噪声同样会干扰积分器的波形,我们将在本信号处理系列后续的博客中对此进行探讨。然而,我们经常考虑的是如何将随机干扰最小化。

滤波技术

工程师喜欢采用滤波技术来克服这些难题。滤波技术可以分为 1) 有限脉冲响应 (FIR) 滤波器或 2) 无限脉冲响应 (IIR) 滤波器。

FIR 滤波器之所以如此命名,是因为任何时候的输出仅取决于当前和先前的输入值值,而不取决于之前的输出值。因此,这种滤波器具有非递归结构,没有反馈,可按照公式 1 建模。

公式 1:FIR 滤波器示例公式。(图片来源:Mustahsin Zarif)

积分器电路就如一个 FIR 滤波器,因为其输出仅取决于输入。

另一方面,IIR 滤波器具有反馈,因为任何时候的输出都取决于先前的输出以及当前输入。这种情况下,可按照公式 2 建模。

公式 2:IIR 滤波器示例公式。(图片来源:Mustahsin Zarif)

图 3 是 可直观表示 IIR 滤波器的框图,显示了输入和输出如何延迟 (z-i, z-j)、缩放 (ai, bj) 以及相加后获得出当前输出。通过改变这些值,我们可以实现不同类型的滤波器。

图 3:IIR 滤波器框图。(图片来源:Mustahsin Zarif)

如果我们想要一个无反馈的 FIR 滤波器框图,y[n] 就只是第一次求和的结果(图 4)。

图 4:FIR 滤波器框图。(图片来源:Mustahsin Zarif)

现在,我们已经掌握了 FIR 和 IIR 滤波器的基础知识,接下来用一个例子来说明我们所学到的知识:移动平均滤波器。

移动平均线的工作方式是求出当前输入和一定数量先前输入的平均值(公式 3)。

公式3:移动平均公式。(图片来源:Mustahsin Zarif)

其中 N= 窗口大小/影响输出结果的样本数

由此看出,这是一个 FIR 滤波器,因为等式右侧没有 y 项。

不过,我们可以巧妙地重组方程,来构造一个 IIR 滤波器。请考虑以下情况:

令 N=5,则

y[5] = (x[5]+x[4]+x[3]+x[2]+x[1])/5,

且 y[6] = (x[6]+x[5]+x[4]+x[3]+x[2])/5

y[6]=(x[6]+y[5]-x[1])/5

因此,当前输出目前取决于之前的输出(y[6] 取决于 y[5])!

更普遍地来说,

y[n] = (y[n − 1] + x[n] − x[n − N - 1])/N

其中 N = 窗口大小

该滤波器在平滑时域信号方面效果奇佳,如图 5 所示,我使用 python 对窗口大小 N = 11 进行了模拟。

图 5:使用 Python 模拟移动滤波器。(图片来源:Mustahsin Zarif)

移动滤波器的 Python 模拟代码:

Copyimport numpy as np

import matplotlib.pyplot as plt



# Parameters for the sinusoidal wave

frequency = 5  # in Hertz

sampling_rate = 100  # Sampling rate in samples per second

duration = 2  # in seconds



# Generate time axis

t = np.linspace(0, duration, int(sampling_rate * duration), endpoint=False)



# Generate a clean sinusoidal signal

clean_signal = np.sin(2  np.pi  frequency * t)



# Add random, white (Gaussian) noise to the signal

noise_amplitude = 0.5

noisy_signal = clean_signal + noise_amplitude * np.random.normal(size=t.shape)



def moving_average(signal, window_size):

    window = np.ones(window_size) / window_size

    return np.convolve(signal, window, mode='same') 



# Apply moving average to the noisy signal

window_size = 11

smoothed_signal_ma = moving_average(noisy_signal, window_size)



# Plot the noisy and smoothed signals

plt.figure(figsize=(12, 9))



plt.subplot(2, 1, 1)

plt.plot(t, noisy_signal, label='Noisy Signal', color='orange')

plt.title('Noisy Sinusoidal Signal')

plt.xlabel('Time [s]')

plt.ylabel('Amplitude')

plt.grid(True)

plt.legend()



plt.subplot(2, 1, 2)

plt.plot(t, smoothed_signal_ma, label='Smoothed Signal (MA)', color='green')

plt.title('Smoothed Signal using Moving Average')

plt.xlabel('Time [s]')

plt.ylabel('Amplitude')

plt.grid(True)

plt.legend()



plt.tight_layout()

plt.show()

结束语

本博客的开头介绍了现实世界中噪音是如何破坏数据的。尽管无法获得数学方程定义的理想响应,但我们可以通过过滤掉所采集数据中的不良特性,使其尽可能接近理想响应。有多种方法可以实现这一点,并且也有多种我们想要实现这一点的场景。虽然我们以移动平均滤波器的模拟响应结束了本篇博客,但在下一篇博客中,我们将研究指数移动平均滤波器如何平滑嘈杂的惯性测量单元 (IMU) 数据!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    162

    文章

    8684

    浏览量

    190394
  • 信号处理
    +关注

    关注

    50

    文章

    1217

    浏览量

    106487
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    有源滤波器和无源滤波器怎么选

    在射频系统中,射频滤波器是关键部件,主要用来做频率选择,让需要的频率信号通过,同时抑制不需要的干扰频率信号。射频滤波器广泛应用于广播电台、电视、无线通信、科学研究等领域。射频
    的头像 发表于 10-09 14:05 •201次阅读
    有源滤波器和无源滤波器怎么选

    高通和低通滤波器应当如何区分

    ‍射频滤波器是信号链中常用的无源或有源组件,主要用于是使频谱中的多余部分或特定频率大幅度衰弱,同时将对工作频率产生的影响降至最低。射频滤波器可分为高通、低通、带通和带阻滤波器,今天我们
    的头像 发表于 10-09 13:26 •214次阅读
    高通和低通滤波器应当如何区分

    带通滤波器的带外抑制与插入损耗

    ‍在射频系统中,射频滤波器是用于频率选择的核心器件,广泛用于无线通信、雷达及测试测量应用。射频滤波器可分为低通、高通、带通及带阻滤波器,其中带通滤波器主要是允许特定频带内的
    的头像 发表于 08-06 09:41 •425次阅读
    带通滤波器的带外抑制与插入损耗

    KR 2480带通滤波器:高性能信号处理的理想选择

    KR 2480带通滤波器:高性能信号处理的理想选择在现代通信系统与电子设备快速发展的背景下,信号的纯净度与稳定性成为影响系统性能的关键因素之一。2480是一款由KR Electroni
    发表于 06-23 09:22

    低通滤波器截止频率计算与RC电路设计方法

    在射频系统中,射频滤波器是重要组件之一。射频滤波器可分为低通滤波器、高通滤波器、带通滤波器及带阻滤波器
    的头像 发表于 06-15 11:20 •1380次阅读
    低通滤波器截止频率计算与RC电路设计方法

    Δ-Σ ADC 中的数字滤波器处理如何避免读取造成的误差电压

    来稳定滤波器,当滤波器稳定后,是采一次输出一次,还是按照之前一样,采三次,求平均值,然后输出1次。 2、信号阶跃状态,需要三个周期的时间来稳定输出,这期间如何避免读取,造成的误差电压。
    发表于 06-03 06:20

    屏蔽电源滤波器的分类

    房滤波器 通用型屏蔽滤波器 高性能型屏蔽滤波器 低漏电型电源屏蔽滤波器 直流电源专用屏蔽滤波器 EMC暗室专用高性能
    的头像 发表于 04-16 10:53 •697次阅读
    屏蔽电源滤波器的分类

    滤波器:突破传统边界,高频时代之下的“挑战”

    在电子信息、通信工程、电力系统等多个技术领域,滤波器作为核心的信号处理器件,承担着“筛选信号、抑制干扰”的关键作用,是保障电子设备稳定运行、提升信号
    的头像 发表于 04-08 14:44 •1859次阅读

    电子信号处理中滤波器的关键要点与发展走向

    在电子信号处理领域,滤波器是不可或缺的核心器件,其核心功能是对输入信号进行频率筛选,让有用信号无衰减通过、抑制无用噪声及干扰
    的头像 发表于 03-28 13:59 •2614次阅读

    滑动平均滤波器介绍

    滑动平均滤波器在工程中十分常见,这里用C语言设计一个灵活的滑动滤波器库函数,十分简单易用,并且滤波器不使用for循环,大大减少了代码运行时间。 并且
    发表于 01-23 08:18

    MAX262微处理器可编程通用有源滤波器:设计与应用指南

    MAX260/MAX261/MAX262 微处理器可编程通用有源滤波器:设计与应用指南 在电子设计领域,滤波器是信号处理中不可或缺的组件。M
    的头像 发表于 01-20 11:05 •1066次阅读

    自适应滤波算法介绍之匹配滤波器的基本原理和应用示例

    自适应滤波理论在统计信号处理中占据非常重要的地位,在通信、控制、雷达等领域获得广泛应用。自适应滤波器的基本目标,是通过某种方式对参数θ(k)进行调整,使
    的头像 发表于 01-07 14:52 •4531次阅读
    自适应滤波算法介绍之匹配滤波器的基本原理和应用示例

    如何选择一个合适的高阶低通滤波器

    高阶低通滤波器是一种通过组合多个二阶滤波器级来实现的滤波器,用于抑制高频信号并保留低频信号。从信号
    的头像 发表于 12-30 15:37 •1797次阅读
    如何选择一个合适的高阶低通滤波器

    中频信号处理的“精准筛子”:杰盈JY-SBP-10.7+带通滤波器技术解析

    在高频 rejection、镜像抑制与中频信号处理领域,9.5-11.5MHz 频段是信号提纯与干扰管控的关键区间,对滤波器的低插损、高选择性、宽温可靠性提出了严苛要求。杰盈通讯
    的头像 发表于 11-20 15:48 •1057次阅读
    中频信号处理的“精准筛子”:杰盈JY-SBP-10.7+带通滤波器技术解析