采集用到的算术均值滤波、滑动滤波、一阶滞后滤波

算术平均滤波法

算术平均滤波法
A方法: 连续取N个采样值进行算术平均运算,N值较大时:信号平滑度较高,但灵敏度较低;N值较小时:信号平滑度较低,但灵敏度较高。N值的选取:一般流量,N=12;压力:N=4。
B优点: 适用于对一般具有随机干扰的信号进行滤波,这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。  
C缺点:
对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM 。 无需每次求一编所有的和,减去第一个数据加上新数据
入门stm32用的ADC采集,就是用算术平均滤波先采集20次求平均。

————————————————
版权声明:本文为CSDN博主「静思心远」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhiyuan2021/article/details/109157029

递推平均滤波法(又称滑动平均滤波法)

A、方法:
把连续取 N 个采样值看成一个队列
队列的长度固定为 N
每次采样到一个新数据放入队尾, 并扔掉原来队首的一次数据.(先进先出原则)
把队列中的 N 个数据进行算术平均运算, 就可获得新的滤波结果
N 值的选取:流量,N=12;压力:N=4;液面,N=4~~12;温度,N=1~4
B、优点:
对周期性干扰有良好的抑制作用,平滑度高
适用于高频振荡的系统
C、缺点:
灵敏度低
对偶然出现的脉冲性干扰的抑制作用较差
不易消除由于脉冲干扰所引起的采样值偏差
不适用于脉冲干扰比较严重的场合
比较浪费 RAM

一阶滞后滤波法

A、方法:
取 a=0~1
本次滤波结果 =(1-a)* 本次采样值 + a * 上次滤波结果
a的取值范围是不大于1的分数。其他人的文章a设置成100,我觉得不对会溢出,且不会逼近采样值。谁验证了可以在评论告诉我能否a为100。
B、优点:
对周期性干扰具有良好的抑制作用
适用于波动频率较高的场合 C、缺点:
相位滞后,灵敏度低
滞后程度取决于 a 值大小
不能消除滤波频率高于采样频率的 1/2 的干扰信号

————————————————
版权声明:本文为CSDN博主「炒番茄蛋的厨子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40862304/article/details/115182152

「静思心远」的原创文章一阶滞后滤波的写法:

#define FIRST_LAG_PROPORTION 0.4
 
float first_order_lag_filter( float new_value)
{
    static float first_order_value , first_order_last_value;
    first_order_value = first_order_last_value;
    first_order_last_value = new_value;
    return (1 - FIRST_LAG_PROPORTION) * first_order_value + FIRST_LAG_PROPORTION * new_value;
}

我用的写法1:这个写法与如上原理接近,但晦涩难懂。可以看写法二

/*采集的ADC都存在ad【5】数组里面,a=0.9,1-a=0.1*/

static u16 ad5_average=0;static u32 sum[6];  
sum[5] += ad[5];//采集到就累加到
ad5_average = sum[5]*0.1; //每次都采样和的0.1
sum[5] -= ad5_average;//采样和的0.9,再累加到采样和

假设ad[5]采集到的都为100,a
采集用到的算术均值滤波、滑动滤波、一阶滞后滤波_第1张图片
数学公式分析:
采集用到的算术均值滤波、滑动滤波、一阶滞后滤波_第2张图片

得到如上公式:RBi=RBi-10.9+1000.1,分析为递增,并且有限。这利用到高数分析。假设i为无穷时,极限为A:A=A*0.9+10得到 A为100,也就是RBi极限值为100,也就是逼近极限值。

我的写法二:是按照原理的标准写的,没有多余。

/*采集的ADC都存在ad【5】数组里面,a=0.9,1-a=0.1*/
    static u16  now_filter_num=0;
    const  float a=0.9;
    now_filter_num=(1-a)*ad[5] + 0.9*now_filter_num;//now_filter_num每次都会作为之前的滤波值来运算。

采集用到的算术均值滤波、滑动滤波、一阶滞后滤波_第3张图片
数学公式分析:设RBi为本次滤波值为RBi,上次的滤波值RBi-1。
得到如上公式:RBi=RBi-10.9+1000.1,分析为递增,并且有限。这利用到高数分析。假设i为无穷时,极限为A:A=A*0.9+10得到 A为100,也就是RBi极限值为100,也就是逼近极限值。

你可能感兴趣的:(STM32F4的学习,单片机,stm32,arm,c语言)