深圳市飞宇光纤系统有限公司

专业光通信无源器件及有源设备制造商

ADC常用滤波算法

:2024-04-29

工程应用中,偶有ADC采样异常或者需要采样值更加平稳之类的需求,在硬件设计已经完成的情况下,常采用一些软件算法来弥补不足,增强系统鲁棒性。本篇主要记录分享强大网友的智慧结晶。

1. 限幅滤波法(又称程序判断滤波法)

设随机变量为X,定义一误差幅值A,滤除|Xn-Xn-1|>A的值。


2. 中位值滤波法

连续采样奇数次,排序取中间值。


3.算数平均滤波法

连续取 N个采样值进行算术平均运算。


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

把连续取 N 个采样值看成一个队列

队列的长度固定为 N

每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)

把队列中的 N 个数据进行算术平均运算,就可获得新的滤波结果


5.中位值平均滤波法(又称防脉冲干扰平均滤波法)

相当于“中位值滤波法”+“算术平均滤波法”

连续采样 N 个数据,去掉一个最大值和一个最小值

然后计算 N-2 个数据的算术平均值


6.限幅平均滤波法

相当于“限幅滤波法”+“递推平均滤波法”

每次采样到的新数据先进行限幅处理,

再送入队列进行递推平均滤波处理


7.一阶滞后滤波法

取 a=0~1

本次滤波结果=(1-a) 本次采样值+a上次滤波结果


8.加权递推平均滤波法

是对递推平均滤波法的改进,即不同时刻的数据加以不同的权

通常是,越接近现时刻的数据,权取得越大。

给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低


9.消抖滤波法

设置一个滤波计数器

将每次采样值与当前有效值比较:

如果采样值=当前有效值,则计数器清零

如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限 N(溢出)

如果计数器溢出,则将本次值替换当前有效值,并清计数器


10.限幅消抖滤波法

相当于“限幅滤波法”+“消抖滤波法”; 先限幅,后消抖

以上算法截取自https://blog.csdn.net/u011852186/article/details/126484032


11.卡尔曼滤波

下面是一个极简卡尔曼滤波。

算法的核心思想是,根据当前的仪器”测量值” 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量.

再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响。

R值固定,Q值越大,代表越信任测量值,Q值无穷大,代表只用测量值。

Q值越小,代表越信任模型预测值,Q值为0,代表只用模型预测值。

float KalmanFilter( float inData )

{

}static float prevData = 0; //上一个数据

static float p = 10, q = 0.001, r = 0.001, kGain = 0; // q 控制误差 r 控制响应速度

p = p + q;

kGain = p / ( p + r ); //计算卡尔曼增益

inData = prevData + ( kGain * ( inData – prevData ) ); //计算本次滤波估计值

p = ( 1 – kGain ) * p; //更新测量方差

prevData = inData;

return inData;

}

原文链接:https://blog.csdn.net/qq_36296398/article/details/110760647

除了上述滤波算法外,其他一些滤波技术如自适应滤波、维纳滤波、小波滤波、卷积滤波、混沌滤波、机器学习滤波等等已过滤掉我等杂波信号,不再链接,网友自行探索。



Copyright © 2012-2024 深圳市飞宇光纤股份有限公司 All Rights Reserved.