中值滤波在单片机中的实战教学

本文介绍了中值滤波在数据处理中的优势,特别是在去除强干扰信号方面。通过实例展示了3阶中值滤波的原理,并提供了滤波算法的代码实现。还探讨了确定滤波阶数的方法及其对信号延迟和计算时间的影响。
摘要由CSDN通过智能技术生成

         说到滤波的话大家应该一下就会想到平均滤波,因为这个比较常接触,从小到大的分数平均分,全省平均工资等,但是很多时候平均数是不合理的,我和千万家产的人平均的话,也人均百万富翁了,所以,当我们遇到一个强的干扰信号,平均之后数据是无法反应出正确的信号的,这个时候,中值滤波的优势就体现出来了。

        中值滤波在数据处理中的角色就是一个和事佬,把数据中的“刺头”剔除出去,如下图所示:

实际的信号就会伴随一些随机噪声和一些强干扰信号,而平均滤波无法滤除强干扰,但随机噪声的滤波效果是不错的,这是平均滤波擅长的,让数据变得平滑,如果能确保需要处理的信号不会有阶跃型的干扰可以上,但是实际使用中是无法保证的,再来看中值滤波后的结果,颇有一种“他强任他强,清风拂山岗”的佛系表现,滤波器很好的过滤了大的“刺头”,也让信号看起来较为平稳。

        看到这想必大家也能看出中值滤波的过人之处,那大家可能会有疑惑,到底怎么中值滤波呢?

        中值滤波的原理就是对固定数量的信号值进行排序后选择中值作为过滤后的信号点,举例:如果是3阶中值滤波,就是取源信号的三个数的中间值作为滤波后的值,细心的小伙伴可能会发现,那取三个数,第一、二个值怎么取3个数? 事实就是它要采到 阶数个数的值 才能滤波。原理大概讲完了,下面直接上代码:

//中值滤波在使用时一般有两种情况 
//1 先采集好数据再进行滤波处理
//2 边采集数据边处理数据

//阶数怎么确定后面会解释 一般来说可以试出来
#define  ORDER  10            //阶数
#define    N    ((ORDER) / 2) //判断中值位置的值

//第一种 先采集好数据再进行滤波处理
/*
*********************************************************************************************************
*	函 数 名: MidFilterBlock
*	功能说明: 对已经采集好的一段数据进行中值滤波
*	形    参: pSrc 源数据地址
*             pDst 滤波后数据地址
*             blockSize 数据个数,至少为3
*             ORDER 至少3阶。
*   注    意:阶数不给设置2是因为我认为2的话就是平均值了,两个值取
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值