常用滤波算法

Posted XXX_UUU_XXX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用滤波算法相关的知识,希望对你有一定的参考价值。

  • 有效值/目标值:TargetValue
  • 采样值:SampleValue
  • 滤波增益:FilterCoefficient

限幅滤波

根据采样值和有效值之间允许的最大偏差进行滤波。

  • | 采样值 - 有效值 | > 最大偏差,采样值无效
  • | 采样值 - 有效值 | <= 最大偏差,采样值有效

优点:能够克服偶然的干扰。

缺点:无法抑制周期性干扰;平滑性差。

设定值附近波动

/* 限幅滤波 */
float FilterCoeff = 10.0f;  /* 最大偏差 */ 
float TargetValue = 50.0f;  /* 设定值 */
float filter( void )

    float SampleValue = get_ADCValue(); /* 获取采样值 */

    /* |采样值 - 设定值| > 最大偏差值 */
    if( abs( SampleValue - TargetValue ) > FilterCoeff )
    
        return TargetValue;
    
    else
    
        return SampleValue;
    

最大值和最小值之间波动

/* 限幅滤波 */
float MinValue = 0.0;  /* 设定最小值 */
float MaxValue = 5.0;  /* 设定最大值,最大值要大于最小值 */
float filter( void )

    float SampleValue = get_ADCValue(); /* 获取采样值 */
    if( SampleValue > MaxValue )
    
        return MaxValue;
    
    else if( SampleValue < MinValue )
    
        return MinValue;
    
    else
    
        return SampleValue;
    


/* 宏定义形式,宏定义一定要加括号,不然可能会出错 */
#define FILTER(v, min, max)  ( (v) > (max)  ? (max) : ( (v) < (min) ? (min) : (v) ) )

一阶滞后滤波

FilterCoeff * TargetValue + ( 1 - FilterCoeff ) * SampleValue

优点:有效抑制周期性干扰;适用于波动频率较高场合。

缺点:灵敏度低;相位滞后,滞后程度取决于滤波增益;不能消除滤波频率高于采样频率*0.5的干扰信号。

/* 一阶滞后滤波 */
float FilterCoeff = 1.0f;   /* 滤波增益取 0 ~ 1*/
float TargetValue = 50.0f;  /* 设定值 */
float fileter( void )

    float ret = 0.0f;
    float SampleValue = get_ADCValue(); /* 获取采样值 */

    ret = FilterCoeff * TargetValue + ( 1 - FilterCoeff ) * SampleValue;
    return ret;

以上是关于常用滤波算法的主要内容,如果未能解决你的问题,请参考以下文章

ADC常用的滤波算法

ADC常用的滤波算法

数字滤波常用方法(转)

滤波跟踪基于matlab最近邻算法多目标航迹关联含Matlab源码 2093期

滤波跟踪基于matlab最近邻算法多目标航迹关联含Matlab源码 2093期

双环位置伺服系统位置调节器pid参数怎么算