全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

一个很实用的数字滤波算法设计

[复制链接]
1362 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
今天终于有空了,来论坛逛逛。
今天来给大家介绍一个在工业控制等应用场合中经常用到的一个算法设计,放脉冲干扰数字滤波的设计。也欢迎大家多多分享一下自己常用的算法,多多益善,哈哈。
在工业控制中经常会遇到尖脉冲干扰的现象,由于干扰会影响个别采样点的数据,此数据与其他采样点的数据相差比较大,如果采用一般的平均值法,则干扰将“平均”到计算结果上去,故平均值法不易消除脉冲干扰而引起的采样值偏差。为此,需要采用防脉冲干扰数字滤波算法。
防脉冲干扰数字滤波算法融合了中值滤波算法和算术平均值算法的有点,但是有一个缺点就是测量速度很慢。
防脉冲干扰数字滤波算法是先对N个数据进行比较,去掉其中的最大值个最小值,然后计算余下的N-2个数据的算术平均值,这样,即可以滤去脉冲干扰又可滤去小的随机干扰。
在实际中,N可取任何值,但为了加快测量计算速度,一般N取的不能态大,常常取4,即为四取二再取平均值,计算方便快速,存储量小。
下面是防脉冲干扰数字滤波的程序代码:
# define N 12
char filter()
{
char ADCRESULT;
char count ,i,j;
char value_buf[N];
int sum=0;
for(count=0;count<N;count++)
{
value_buf[count]=ADCRESULT;
delay();
}
for(j=0;j<N-1;j++)
{
for(i=0;i<N-j;i++)
{
if(value_buf[i]>value_buf[i+1])
{ temp=value_but[i];
value_buf[i]=value_buf[i+1;
value_buf[i+1=temp;
}
}
}
for(count=1;count<N-1;count++)
sum+=value[count];
return(sum/(N-2));
}

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表