【简单滤波算法】常见的滤波算法讲解及例程(附代码教程)

admin 2025-01-16 275人围观 ,发现212个评论

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


限幅滤波法算法:

确定两次采样允许的最大偏差值(设为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);}

完整代码可进群免费领取!!!

猜你喜欢
    不容错过