中位值滤波法就是通过连续采样奇数个数据,然后对数据从小到大排序,取中间的值做为本次采样值。

下面看C代码的实现

#define M  11unsigned int filter2( void )
{unsigned int value_buf[M];unsigned int count, i, j, temp;for( count = 0; count < M; count++ ){value_buf[count] = ReadVol_CH2();}for( j = 0; j < M - 1; j++ ){for( i = 0; i < M - j - 1; i++ ){if( value_buf[i] > value_buf[i + 1] ){temp = value_buf[i];value_buf[i] = value_buf[i + 1];value_buf[i + 1] = temp;}}}return value_buf[( M - 1 ) / 2];
}

M为每次采样的数据个数,M要为奇数。

void main( void )
{while( 1 ){val = ReadVol_CH2();            //读取AD采样值val1 =  filte2();printf( "A%d\r\n", val );printf( "B%d\r\n", val1 );}
}

主程序中循环读取AD口的采样值,并将采样值通过中位值滤波算法进行滤波,通过串口分别打印原始采样值和滤波后的值,并通过串口将数据打印来,并在串口波形软件上显示。

蓝色曲线为采样的原始数据波形图,橙色曲线为经过中位值滤波算法滤波后的波形图。通过两组曲线可以看出,经过中位值滤波算法后,将原始曲线中的毛刺都滤除掉了,使采样数据更加平滑。

中位值滤波法可以滤除偶然因素引起的脉冲干扰,适用于变化缓慢的采样系统,如温度、液位、流量等系统的测量。

单片机ADC采样算法----中位值滤波法相关推荐

  1. 单片机ADC采样算法----限幅滤波法

    限幅滤波法就是通过软件来限制本次采样值的上次采样值的偏差,若本次采样值和上次采样值的偏差超过了设定的最大偏差值,则丢弃本次的采样值. 下面看C代码的实现 //返回两个整数差 unsigned int ...

  2. 单片机ADC采样算法----中位值平均滤波法

    中位值平均滤波法滤波法就是通过连续采样N个数据,然后对数据从小到大排序,然后去掉最大值和最小值,对剩余的N-2个值计算算数平均值.也就是中位值滤波和算数平均滤波的结合. 下面看C代码的实现 #defi ...

  3. 单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  4. c语言adc采集取平均值,单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  5. 单片机ADC采样算法----限幅消抖滤波法

    限幅消抖滤波法相当于"限幅滤波法"+"消抖滤波法"    . 下面直接看C代码的实现 #define A 200 #define N 20 //返回两个整数差 ...

  6. 单片机ADC采样算法----消抖滤波法

    消抖滤波法的实现步骤为:设置一个滤波计数器,将每次采样值与当前有效值比较,如果采样值等于当前有效值,则计数器清零.如果采样值不等于当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出),如 ...

  7. 单片机ADC采样算法----加权递推平均滤波法

    加权递推平均滤波法是对递推平均滤波法的改进,即不同时刻的数据加以不同的权.通常是,越接近现时刻的数据,权取得越大.给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低. 下面直接看C代码的实现 d ...

  8. 单片机ADC采样算法----限幅平均滤波法

    限幅平均滤波法相当于"限幅滤波法"+"递推平均滤波法",每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理. 下面看C代码的实现 #define ...

  9. 单片机ADC采样算法----一阶低通滤波

    关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下:  y(n) = q*x(n) + (1-q)*y(n-1)     其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...

最新文章

  1. 成都理工大学乐千桤java考试_2009年度优秀教师、优秀教务工作者评选结果公示-成都理工大学工会...
  2. 数据加密类型及创建和申请CA证书
  3. 修改Cocos2d-X-3.2中的setup.py, 使其能用python3
  4. html列表按时间排序代码_按字母顺序排序的列表
  5. mysql 5.7.13 mac_Mac 安装mysql 5.7.13版本 登录及改密码
  6. 【MM系列】SAP 关于更改物料的价格控制类型
  7. python数据预测案例_Python数据分析及可视化实例之疾病预测(分类)
  8. SVN文件上感叹号、加号、问号等图标的原因
  9. NVolecity 处理DataTable 小记
  10. Hadoop 面试题之七
  11. TX2 摄像头CSI(一)
  12. 转一篇张欣写的Ubuntu扩展安装
  13. Android 10.0在电话拨号盘(Dialer app中)通过暗码进入工厂测试模式
  14. 猫哥教你写爬虫 040--存储数据-作业
  15. 数制转换c语言编程,C语言数据结构中数制转换实例代码
  16. 串口转HID键盘鼠标芯片沁恒微电子CH9329
  17. 自动计算所有包围盒的中心点
  18. 【愚公系列】2022年10月 微信小程序-电商项目-微信支付小程序确认支付结果和退款功能实现(node)
  19. python web server 知乎_“知乎网”技术方案初探
  20. TroubleShooting_配置正确的WAU

热门文章

  1. IOS开发之手势——UIGestureRecognizer 共存
  2. 腾达A6无线路由器的几种连接模式
  3. DevExpress学习笔记之如何获取Repository Item的值
  4. 获取指定路径下所有PDF文件的总页数
  5. 【python】for..range练习 与函数的练习题
  6. 【logstash】使用logstash拉取数据到kerberos+SSL认证的kafka集群中遇到的坑
  7. 【Java】Java中的设计模式的介绍以及代码详解
  8. app测试过程和重点关注内容
  9. CSS 伪类(Pseudo-classes)
  10. 二级c语言编程案例,2011年计算机二级考试C语言经典程序设计100例(7)