原创 均值滤波前的数据离散性判断

2020-11-27 14:08 3115 29 2 分类: MCU/ 嵌入式

求数据平均值时,增加方差计算,判定数据是否稳定未被干扰

单片机A/D采集到的数据需要滤波,防止有噪声。各种方法,平均值,中值不一而足。滤波前,应该对数据做一些判断,防止数据源本身错误,使滤波结果有较大误差。可以采用对数据求方差的办法,先计算平均值,在平均值的基础上,计算方差。如果方差超过设定值,视为无效数据。

  1. #define DEVIATION 50 // 方差限
  2. /*
  3. 输入 *p 为首个数据指针
  4. Len 为数据长度
  5. *m 将存放数据均值
  6. 返回值 1 数值方差在限值内 0 数值方差在限值外
  7. */
  8. uint8_t dev(uint16_t *p,uint8_t len,uint16_t *m){
  9. uint32_t temp;
  10. uint16_t mean;
  11. uint8_t i;
  12. temp = 0;
  13. for(i = 0;i计算均值
  14. temp += p[i];
  15. temp /= len;
  16. mean = (uint16_t)temp;
  17. *m = mean; // 保存均值
  18. temp = 0;
  19. for(i = 0;i计算方差
  20. if(p[i]>mean)
  21. temp += (p[i]-mean)^2;
  22. else
  23. temp += (mean - p[i])^2;
  24. }
  25. temp /= len;
  26. if(temp < DEVIATION)
  27. return 1;
  28. else
  29. return 0;
  30. }

作者: southcreek, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-408807.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

southcreek 2020-11-30 15:59

我的果果超可爱: zhichi yixia
试一下,有的时候很有效。

我的果果超可爱 2020-11-28 20:07

zhichi yixia
相关推荐阅读
southcreek 2024-12-04 16:32
PWM输出隔离DAC设计
这个设计的目标是产生一个隔离的DAC输出。12V供电,产生0~5V的输出。达到10000约13.3位的分辨率。要求DAC输出在改变设置后1S内能稳定。需要能长时间保持稳定和低噪声。能达到要求的DAC只...
southcreek 2024-12-04 15:23
一个基于HAL库的串口控制框架
将串口接收配置为 DMA方式,DMA 使用 DMA_CIRCULAR 模式工作。串口接收的数据实际上构成循环队列。 定义一个结构Comm_typedef 结构体中包含指向接收到的第一字节位置chrc...
southcreek 2024-07-08 11:38
接地不良导致的故障分析
这个电路的控制板需要连接显示板和识别板。5V 供电和串行控制连到显示板,显示板再连接到识别板。识别板上电位器使用一个LDO供电,将输入的5V转成3.3V。当电位器滑动时,输出电压在0~3.3V之间。...
southcreek 2024-06-26 09:15
【EMC整改】带辅助加热的滴速控制器辐射抗扰整改
这个滴速式的输液泵使用一个红外线发射和接收装置,当有液滴通过时,会扰动检测信号,识别这个扰动检测到液滴滴下,获得滴壶中的液滴速度,调整阀门大小,实现输液速度控制。控制器还配备一根加热条,用于输液时对药...
southcreek 2024-06-06 08:52
QT 使用QSettings 操作ini文件配合表格操作
这个项目可以演示 使用QSetting 读取或写入 ini文件。并使用tablewidget 显示。Ini文件的格式如下,这个文件可以事先编写。也可以在程序中生成。有一个大类,下面有一个小类使用等号设...
southcreek 2024-05-27 16:18
差分输入ADC的单端到差分转换器驱动设计
单端信号需要转换成差分信号,以便使用ADC进行转换。这个就所谓的ADC驱动电路。需要的结果为Vp = Vcm + Vi/2Vn = Vcm – Vi/2这样 Vp – Vn = Vi使用简单的加法器和...
EE直播间
更多
我要评论
2
29
关闭 站长推荐上一条 /3 下一条