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;
}
|