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

    文章

    8501

    浏览量

    186634
  • 信号处理
    +关注

    关注

    49

    文章

    1179

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    屏蔽电源滤波器的分类

    滤波器 通用型屏蔽滤波器 高性能型屏蔽滤波器 低漏电型电源屏蔽滤波器 直流电源专用屏蔽滤波器 EMC暗室专用高性能
    的头像 发表于 04-16 10:53 272次阅读
    屏蔽电源<b class='flag-5'>滤波器</b>的分类

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

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

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

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

    滑动平均滤波器介绍

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

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

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

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

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

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

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

    1905A-6带通滤波器

    特性使其非常适合需要精确频率选择的场景,如通信系统、音频处理等。低通带衰减:通带内的衰减仅为1 dB,这意味着信号在通过滤波器时损失非常小,能够保持较高的信号质量。高阻带衰减:在12
    发表于 12-30 08:55

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

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

    信号处理:指数移动平均 (EMA) 滤波器

    作者: Mustahsin Zarif 之前我们在《信号处理简介》一文中已经见过了两类滤波器:有限脉冲响应 (FIR) 滤波器和无限脉冲响应
    的头像 发表于 10-04 18:35 2393次阅读
    <b class='flag-5'>信号</b><b class='flag-5'>处理</b>:指数<b class='flag-5'>移动</b><b class='flag-5'>平均</b> (EMA) <b class='flag-5'>滤波器</b>

    高频滤波器精密加工——如何“筛”出纯净信号

    高频滤波器是无线通信、雷达、卫星导航等领域的核心元件,其作用是精准筛选特定频率信号,抑制干扰噪声。随着5G、物联网等技术的普及,通信设备对滤波器的性能要求愈发严苛——频率选择性更强、插入损耗更低
    的头像 发表于 09-24 15:02 824次阅读

    什么是滤波器?维爱普详细介绍

    滤波器是一种用于筛选特定频率信号或能量的电子元件,通过允许某些频率通过、抑制其他频率,实现信号优化或能量净化。它在电子设备、通信系统、电力工程等领域广泛应用,是保障系统稳定运行的核心组件。
    的头像 发表于 06-19 15:08 1227次阅读

    常用的数字滤波器算法及其特性

    常用的软件滤波器有限幅滤波法、中位值滤波法、算数平均滤波法、递推平均
    的头像 发表于 06-18 09:04 1469次阅读

    有源滤波器与无源滤波器的区别

    滤波器是根据电路参数对电路频带宽度的影响而设计出来的工程应用电路,滤波器种类很多,有源滤波器和无源滤波器的区别我们最简单的分别办法是看看是否需要电源,在作用上最大的区别在于有源
    的头像 发表于 06-18 09:03 2389次阅读