这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 程序判断滤波算法——嵌入式常用算法

共10条 1/1 1 跳转至

程序判断滤波算法——嵌入式常用算法

院士
2013-10-08 20:24:27     打赏

最近计划设计一些数据采集终端,主要用来模拟分布式数据采集与控制功能。由于自己的预算有限,因此,大部分功能实现均采用软件来实现,少部分必要功能由硬件实现。虽然牺牲了一些CPU处理时间,但是本身数据采集终端的功能单一,CPU也就完全能够胜任。这里就包括了温度采样功能里的滤波。

我们知道在普通环境下,外界的温度在短时间内是不会发生骤变的,因此,如果我们传感器采集的数据在短时间间隔变化较大,则有理由认为该数据为非法数据,应该被丢弃。说得专业一点就是:如果相邻两次采样值之间的变化未超过预定的范围,说明该采样值未明显干扰,可以采信。基于这个原理,某些牛人就设计了“程序判断滤波”方法,也称“限幅滤波”。

#define DX 15

Int32U history
Int32U ProgFilter()
{
  Int32U temp;
  temp = SampleADC(); 
  if(((temp - history) > DX) || ((history - temp) >DX))
  {
    temp = history;}
  history = temp;
  return temp;
}

从源代码上我们可以轻松看到,对于采集出来的数据进行一次与上一次结果的比较判断,如果数据在限幅之内,则将数据保留。这时,我们忽略了一个情况,就是“如果数据限幅之外呢?这次数据就不要了吗?还是如何处理呢?”

在限幅之外时,如果数据正处于明显变化的阶段,两次采样数据也有明显的差别,这时没有有效数据而使用上一次数据来替代就有些不足,也会带来较大的误差了。如果我们这里采用合理的变化量预测,使用一个合理的数据来替代目前被干扰的,则会使误差减小。

对于可怜的MCU计算能力来,使用线性预测的方式,我想,是最好的策略了。当然,使用线性预测的算法将全再后面的帖子中详细阐述。

欢迎关注本次系列帖子。




关键词: 嵌入式     滤波     算法     阈值    

高工
2013-10-08 21:25:13     打赏
2楼
关注,预测算法存在误差是必然的,如何减小误差是个值得研究的问题,常温下的温度值也有限,如果做一张表,用查找表的方式应该可以有效减少CPU的负担

院士
2013-10-08 22:20:09     打赏
3楼

此为目前在低功耗状态下,相当有效的方法之一。

不仅有效降低算法复杂度,而且节省低端MCU的可怜的计算能力。


高工
2013-10-08 22:27:09     打赏
4楼
持续关注,,有时候采集的数据在上下几点之间变动,用限幅滤波能滤去非法数据,用什么方法能让采集数据的变动小一点。

高工
2013-10-09 00:30:44     打赏
5楼

目测要火,搬个板凳学习。

话说,注意到老乔要做个分布式的采集系统,这个温度分布的数学模型是否有必要存在呢?

超出限幅滤波的数据,可以考虑根据超幅的情况和温度分布的模型进行某类比较再进行取舍吧。

强帖留名,持续关注。


院士
2013-10-09 22:13:18     打赏
6楼

其实吧~

这个算法还是简单的,我觉得平时使用的最多还得是均值滤波法。


高工
2013-10-10 00:24:33     打赏
7楼
跟着楼主领略算法的魅力

专家
2013-11-12 20:35:59     打赏
8楼
加上个输入接口的话用起来就更加的方便!

专家
2013-11-12 20:36:23     打赏
9楼
扩展性更强!

专家
2013-11-13 09:23:07     打赏
10楼
持续关注。这种算法像楼上说的,对于突发的奇点,过滤效果还是很明显的

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]