滤波算法

本文介绍了滤波算法在传感器数据处理中的应用,包括低通滤波、高通滤波和融合滤波。详细讲解了RC滤波、均值滤波、滑动滤波、中值滤波、巴特沃斯滤波、切比雪夫滤波和卡尔曼滤波,并提供了相应的MATLAB实现和C语言代码示例。
摘要由CSDN通过智能技术生成

滤波是传感器处理中的重要算法,经常接触底层常常用到,以下总结了一些滤波算法,供以后参考调用。

下文分为三部分 

1、低通滤波

2、高通滤波

3、融合滤波

一、低通滤波

1.1RC滤波的数字低通滤波

  指在截止频率fc的时候,增益为-3db(Aup=0.707)的滤波器,也是模电书中出现的第一种硬件滤波器,以下是对应的软件形式的1阶RC滤波器的数字形式(本断程序节选自匿名4轴)

  一阶形式:Y(n)=(1-a)*Y(n-1)+a*X(n)

  下式中 oldData表示上一次的输出Y(n-1)  newData表示新的输入X(n)

  float LopPassFilter_RC_1st(float oldData, float newData, float a)
  {
    return oldData * (1 - a) + newData * a;
  }

  计算比例系数a:

  float LopPassFilter_RC_1st_Factor_Cal(float deltaT, float Fcut)
  {
    return deltaT / (deltaT + 1 / (2 * M_PI * Fcut));
  }

1.2均值滤波:

  把一段时间内的数据累加后求平均值,达到平滑的作用,适用性广泛,元素越多滤波效果越好时延越高。

  uint16_t LowPassFilter_Average(uint16_t data[],uint16_t length)

  {

    uint32_t add=0;
    uint16_t result;
    int i;

    for(i=0;i<length;i++)
    {
      add += data[i];
    }
    result=add/length;
    return result;
  }

  data[]放入一段时间里的数值,length:data数组的长度

1.3滑动滤波

  在均值滤波的基础上,加上比例系数,最新的数据具有更大的比例,增加时效性。

  以下列举了一个三个元素的滑动滤波

  double LowPassFilter_Silding(double dataNewest,double dataMiddle,double dataLast)
  {

    #define PROPORTIONNEW 0.55

    #define PROPORTIONMID 0.35

    #define PROPORTIONLAST (1- PROPORTIONNEW -PROPORTIONMID )

    double result;
    result = PROPORTIONNEW *dataNewest+

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值