• 关于指数加权平均(一阶低通滤波)



    关于指数加权平均,已经有很多珠玉在前,很多博主都写了很好的博客。不过如果不自己推导消化一下,感觉东西就不是自己的,所以还是写个博客记录一下学习过程以及一些思考。

    指数加权平均数学表达式

    指数加权平均公式如下,其中 v t v_t vt为当前时刻平均值, v t − 1 v_{t-1} vt1为上一时刻平均值, θ t \theta_t θt为当前时刻新数据, β \beta β小于1为权重系数。

    v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t-1}+(1-\beta)\theta_t vt=βvt1+(1β)θt

    有的也写成如下形式,其中 α = 1 − β \alpha=1-\beta α=1β,区别不大:
    v t = ( 1 − α ) v t − 1 + α θ t v_t=(1-\alpha)v_{t-1}+\alpha\theta_t vt=(1α)vt1+αθt
    v t = v t − 1 + α ( θ t − v t − 1 ) v_t=v_{t-1}+\alpha(\theta_t-v_{t-1}) vt=vt1+α(θtvt1

    按照上述计算方式,则:
    v 0 = 0 v_0=0 v0=0
    v 1 = ( 1 − β ) θ 1 v_1=(1-\beta)\theta_1 v1=(1β)θ1
    v 2 = β v 1 + ( 1 − β ) θ 2 = β ( 1 − β ) θ 1 + ( 1 − β ) θ 2 v_2=\beta v_{1}+(1-\beta)\theta_2 =\beta (1-\beta)\theta_1+(1-\beta)\theta_2 v2=βv1+(1β)θ2=β(1β)θ1+(1β)θ2
    v 3 = β v 2 + ( 1 − β ) θ 3 = β 2 ( 1 − β ) θ 1 + β ( 1 − β ) θ 2 + ( 1 − β ) θ 3 v_3=\beta v_{2}+(1-\beta)\theta_3 =\beta^2 (1-\beta)\theta_1+\beta(1-\beta)\theta_2 +(1-\beta)\theta_3 v3=βv2+(1β)θ3=β2(1β)θ1+β(1β)θ2+(1β)θ3

    v t = ( 1 − β ) ( θ t + β θ t − 1 + β 2 θ t − 2 + + β 3 θ t − 3 + . . . ) v_t =(1-\beta)(\theta_t + \beta\theta_{t-1}+\beta^2 \theta_{t-2}+ +\beta^3\theta_{t-3}+...) vt=(1β)(θt+βθt1+β2θt2++β3θt3+...)

    指数加权平均原理及其物理意义

    指数加权平均的计算结果 v t v_t vt可以看作是 1 / ( 1 − β ) 1/(1-\beta) 1/(1β)个数据的平均值,假设 β = 0.9 \beta=0.9 β=0.9,即相当于计算10个数据的平均值。由此可知,如果 β \beta β越大,则平均的数据越多,加权平均值更平滑,时间延迟更严重。

    在实际应用中,如果数据的采样时间间隔为 T {T} T,想对时间常数 τ \tau τ内的采样值进行平均,那么只需要设置 β \beta β满足 1 / ( 1 − β ) = τ / T 1/(1-\beta)=\tau/{T} 1/(1β)=τ/T

    那么为什么指数平均可以看作是 1 / ( 1 − β ) 1/(1-\beta) 1/(1β)个数据的平均值的平均值呢?

    由于 β \beta β小于1,所以随着指数的增大, β n \beta^n βn越趋近于0,而一般认为当指数项衰减到 1 e \frac{1}{e} e1就可以忽略不计。设 ϵ = 1 − β \epsilon=1-\beta ϵ=1β,由于当 ϵ − > 0 + \epsilon -> 0^+ ϵ>0+时, ( 1 − ϵ ) 1 ϵ − > 1 e (1-\epsilon )^{\frac{1}{\epsilon}}->\frac{1}{e} (1ϵ)ϵ1>e1,因此

    β 1 1 − β = 1 e \beta^{\frac{1}{1-\beta}}=\frac{1}{e} β1β1=e1

    即可以看作只有最近的 1 1 − β {\frac{1}{1-\beta}} 1β1个数据项进行了平均。

    偏差修正

    在前期没有达到 1 / ( 1 − β ) 1/(1-\beta) 1/(1β)个数据的情况下,如果对前期的平均值有精度要求,则需要进行修正。通过将 v t v_t vt除以 ( 1 − β t ) (1-\beta^{t}) (1βt)来修正指数加权平均的误差。

    v t = β v t − 1 + ( 1 − β ) θ t ( 1 − β t ) v_t=\frac{\beta v_{t-1}+(1-\beta)\theta_t}{(1-\beta^{t})} vt=(1βtβvt1+(1β)θt

    由于随着t增大, ( 1 − β t ) (1-\beta^{t}) (1βt)会趋近于1,因此对后期的指数加权平均没有影响。

    一阶低通滤波

    从时域和频域的角度来看,指数加权平均实际上也是一阶低通滤波或者控制模型中一阶惯性环节。通过画波特图和幅频响应曲线,可以看到各频率的幅值情况及相位延迟情况。

    转折频率如下,其中 α = 1 − β \alpha=1-\beta α=1β
    在这里插入图片描述
    如果 β = 0.9 \beta=0.9 β=0.9,采样频率0.01s,则转折频率1.7Hz。

    参考来源

    [1]优化算法之指数加权平均详解
    [2] Moving average
    [3] 一阶低通滤波(LPF)的原理及应用(以APM/PX4飞控为例)
    [4] 指数加权平均

  • 相关阅读:
    C++:关联式容器map的使用
    学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计
    ​辉瑞校园《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著作——2023学生开学季辉少许
    jvm oom内存溢出,导出dump,使用mat进行问题分析
    LLDB 三种输出方式 对比及原理探索
    循环中的闭包
    Spark大数据处理 使用Scala集成开发环境
    b和B的区别?大B与小b的区别(Bps与bps)以及b、B、KB、MB、TB、PB、EB的换算
    阿里云 短信服务——验证码盗刷与短信轰炸
    springboot+VUE+elementui医院设备仪器维修保养管理系统
  • 原文地址:https://blog.csdn.net/weixin_42918498/article/details/126843393