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

    文章

    8355

    浏览量

    184767
  • 信号处理
    +关注

    关注

    49

    文章

    1095

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    作者: Mustahsin Zarif 之前我们在《信号处理简介》一文中已经见过了两类滤波器:有限脉冲响应 (FIR) 滤波器和无限脉冲响应
    的头像 发表于 10-04 18:35 1552次阅读
    <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 356次阅读

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

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

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

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

    高带通TSIF集成滤波器

    低通滤波器 高通滤波器 带通滤波器 带阻滤波器 全通滤波器 滤波器类型 作用 频率特性 应用场景
    的头像 发表于 03-20 15:42 722次阅读
    高带通TSIF集成<b class='flag-5'>滤波器</b>

    使用DDS生成三个信号并在Vivado中实现低通滤波器

    本文使用 DDS 生成三个信号,并在 Vivado 中实现低通滤波器。低通滤波器将滤除相关信号
    的头像 发表于 03-01 14:31 2445次阅读
    使用DDS生成三个<b class='flag-5'>信号</b>并在Vivado中实现低通<b class='flag-5'>滤波器</b>

    如何区分有源滤波器和无源滤波器,它们各自的应用场景是什么

    有源滤波器与无源滤波器的主要区别在于元件构成。无源滤波器主要由无源元件组成,如电阻、电容和电感,它们自身不具备放大信号的能力。而有源滤波器
    的头像 发表于 02-08 11:45 1795次阅读
    如何区分有源<b class='flag-5'>滤波器</b>和无源<b class='flag-5'>滤波器</b>,它们各自的应用场景是什么

    带通滤波器的设计步骤与优化方法

    带通滤波器作为信号处理领域的重要组件,其设计步骤与优化方法对于确保滤波器性能满足特定应用需求至关重要。本文将详细阐述带通滤波器的设计步骤,并
    的头像 发表于 02-05 16:48 2943次阅读

    带通滤波器的种类与技术架构

    带通滤波器(Band-Pass Filter,BPF)是一种重要的信号处理元件,它允许特定频率范围内的信号通过,同时衰减或抑制其他频率的信号
    的头像 发表于 02-05 16:41 1529次阅读

    低通滤波器的工作原理 低通滤波器在音频处理中的应用

    一、低通滤波器的工作原理 低通滤波器(Low Pass Filter,LPF)是一种电子滤波装置,其主要功能是允许低频信号通过,同时抑制高于特定截止频率的
    的头像 发表于 02-01 10:24 2634次阅读

    低通和高通滤波器的基础知识

    作者:Aiden Warne 低通和高通滤波器简介 低通和高通滤波器广泛应用于电气工程领域。例如,这些低通和高通滤波器可用于音频处理、图像
    的头像 发表于 01-25 16:55 2553次阅读
    低通和高通<b class='flag-5'>滤波器</b>的基础知识

    低通滤波器的常见误区

    在电子工程和信号处理领域,低通滤波器(Low Pass Filter, LPF)扮演着至关重要的角色。它们用于去除信号中的高频噪声,平滑数据,或者在通信系统中限制
    的头像 发表于 01-21 10:02 1157次阅读

    常见低通滤波器类型分析

    低通滤波器(Low-pass filter, LPF)是一种允许低频信号通过,同时阻止或减弱高频信号的电子滤波器。在信号
    的头像 发表于 01-21 09:50 2724次阅读

    关于SAW与BAW RF滤波器

    为何需要RF滤波器?射频(RF)滤波器是所有RF/微波系统的基础元件,特别是具备多个信道或频段的无线通信系统。RF滤波器的主要功能是衰减某些不需要频段中的信号,而只对所需频段中的
    的头像 发表于 12-26 11:42 1250次阅读
    关于SAW与BAW RF<b class='flag-5'>滤波器</b>

    滤波器的一些常识

    滤波器简介滤波器是一种用于信号处理的设备或系统,用于改变信号的频率特性,以实现
    的头像 发表于 12-18 17:05 1508次阅读
    <b class='flag-5'>滤波器</b>的一些常识