(图片来源网络,侵删)
工程应用中,偶有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/12648403211.卡尔曼滤波下面是一个极简卡尔曼滤波算法的核心思想是,根据当前的仪器”测量值” 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量.再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响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除了上述滤波算法外,其他一些滤波技术如自适应滤波、维纳滤波、小波滤波、卷积滤波、混沌滤波、机器学习滤波等等已过滤掉我等杂波信号,不再链接,网友自行探索
0 评论