打印
[MM32软件]

ADC常用滤波算法提要

[复制链接]
9|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
belindagraham|  楼主 | 2024-9-28 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;

}


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

1358

帖子

0

粉丝