zoukankan      html  css  js  c++  java
  • DSP的一阶低通数字滤波实现【转】

     

    将普通硬件RC低通滤波器的微分方程用差分方程来表求,变可以采用软件算法来模拟硬件滤波的功能,经推导,低通滤波算法如下:

       Yn=a* Xn+(1-a)*Yn-1

    式中

    Xn——本次采样值

    Yn-1——上次的滤波输出值;

    a——滤波系数,其值通常远小于1;

    Yn——本次滤波的输出值。

    由上式可以看出,本次滤波的输出值主要取决于上次滤波的输出值 (注意不是上次的采样值,这和加权平均滤波是有本质区别的),本次采样值对滤波输出的贡献是比较小的,但多少有些修正作用,这种算法便模拟了具体有教大惯性的低通滤波器功能。滤波算法的截止频率可用以下式计算:

                     fL= a/2Pit   pi为圆周率3.14…

    式中

    a——滤波系数;

    t——采样间隔时间;

    例如:当t=0.5s(即每秒2次),a=1/32时;

    fL=(1/32)/(2*3.14*0.5)=0.01Hz

    当目标参数为变化很慢的物理量时,这是很有效的。另外一方面,它不能滤除高于1/2采样频率的干搅信号,本例中采样频率为2Hz,故对1Hz以上的干搅信号应采用其他方式滤除,

    低通滤波算法程序于加权平均滤波相似,但加权系数只有两个:a和1-a。为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。虽然采样值为单元字节(8位A/D)。为保证运算精度,滤波输出值用双字节表示,其中一个字节整数,一字节小数,否则有可能因为每次舍去尾数而使输出不会变化。

       设Yn-1存放在30H(整数)和31H(小数)两单元中,Yn存放在32H(整数)和33H(小数)中。

    http://hi.baidu.com/lingyin55/blog/item/47cf74ef99681133acafd5ae.html

    signed short vbu;

    signed short vbusf;

    signed long vbusmem;

    /* DC bus voltage */

    vbusmem+=vbus;

    vbusmem-=vbusf;

    vbusf=vbusmem>>5;                        // 320ms filtro

    vbus输入
    vbusf经滤波后的输出

  • 相关阅读:
    Android Handler与多线程
    在Eclipse发展Webapp部署过程,缓存的位置
    虚拟仿真引擎消息机制
    OpenGL+VS2013+WIN7(64)组态
    注解
    ios背景更新和下载
    uva 11529
    ATMEGA16 IOport相关汇总
    【剑指offer】Q32:从1至n整1出现的次数(python)
    Android NDK进入发展
  • 原文地址:https://www.cnblogs.com/iable/p/4206892.html
Copyright © 2011-2022 走看看