大家好,今天给大家介绍常见的滤波算法讲解及例程,下方附有本文涉及的全部资料和源代码的获取方式,可进群免费领取。

确定两次采样允许的最大偏差值(设为A)
每次检测到新的采样值时判断:
如果本次值与上次值之差=A,则本次采样值有效
如果本次值与上次值之差A,则本次采样值无效。
如果本次采样值无效,对本次采样可以做不同的处理。
比方说:
放弃本次采样值,使用上次采样值作为本次采样值
本次采样值=上次采样值±限幅A
放弃本次采样值,重新采样
优点:能够消除因偶然波动引起的误差
缺点无法抑制周期性的干扰
平滑度差
代码:/*variation_Range值可根据实际情况调整*/definesamples_Num5//采样次数intMedian_Filter(){unsignedintvalue[M]={0};unsignedintcount,i,j,temp;for(count=0;countsamples_Num;count++){value[count]=Read_Adc();}for(j=0;jsamples_Num-1;j++){for(i=0;isamples_Num-j-1;i++){if(value[i]value[i+1]){temp=value[i];value[i]=value[i+1];value[i+1]=temp;}}}returnvalue[(M-1)/2];}算术平均值滤波算法:在某时刻对信号进行连续多次采样,对采样值进行算术平均(平均值),作为该时刻的信号采样值
就是取平均值,连续采样的次数视具体情况而定
优点:对抑制周期性干扰和随机干扰有良好效果
缺点:采样比较耗时,并且平均值可能受到某个数据干扰而产生较大浮动。
代码:#defineN10intvalue=0;intArithmetic_Filter(){for(inti=0;iN;i++){value=value+Read_Adc();}return(value/N);}完整代码可进群免费领取!!!