10种经典的软件滤波方法介绍

描述

前言介绍:

随着信息科技的发展,信号处理得到了大幅推动,已被广泛应用于雷达、通信、自动化、航空航天等领域。在信号处理系统中,输入信号通常含有各种噪声和干扰。为对信号进行准确的测量和控制,必须削弱或滤除被测信号中的噪声和干扰。一般在系统中可选用硬件滤波软件滤波

硬件滤波介绍:

硬件滤波又分为无源滤波和有源滤波,无源滤波是通过 RC 滤波器或 LC 滤波器等模拟滤波器进行滤波。硬件滤波的优势是不需要进行复杂的程序处理,反应灵敏。

软件滤波介绍:

软件滤波有时候也称数字滤波是通过一定的算法削弱噪声的影响软件滤波的优势是不需要硬件的投入,仅仅靠代码就可以完成,而且可靠稳定。

10种经典的软件滤波方法包括:

  • 限幅滤波法
  1. 中位值滤波法
  2. 算术平均滤波法
  3. 递推平均滤波法
  4. 中位值平均滤波法
  5. 限幅平均滤波法
  6. 一阶滞后滤波法
  7. 加权递推平均滤波法
  8. 消抖滤波法
  9. 限幅消抖滤波法

限幅滤波介绍:

限幅滤波基本思路是根据被测对象确定相邻两次采样所允许的最大差值△Y, 然后在每次采样后和上次有效采样值进行比较, 如果变化幅度不超过△Y,则本次采样有效;否则,则这次采样值被视为干扰而放弃,而以上次采样值为准。

其原理可用如下公式表示:

|yn-yn-1|≤△Y :yn 有效 如果本次值与上次值之差<=DEVIATION_MAX,则本次值有效;

|yn-yn-1|>△Y :yn-1 有效 如果本次值与上次值之差>DEVIATION_MAX,则本次值无效,放弃本次值,用上次值代替本次值。

yn 为第 n 次采样值, yn-1 为第(n-1)次采样值

△Y一般根据经验来设定,确定两次采样允许的最大偏差值(设为DEVIATION_MAX);

C语言示例代码:

/* DEVIATION_MAX,根据实际情况调整。value为有效值,new_value为当前采样值;
滤波程序返回有效的实际值 */
注:本文假定从16位AD中读取数据(若采用更高位的AD可定义数据类型为int);子程序为get_ad(),用于获取AD采样数值;
#define DEVIATION_MAX 10
int16_t value;
int16_t filter(void)
{
	int16_t new_value;
	new_value = get_ad();
	if ((new_value - value > DEVIATION_MAX) || (value - new_value > DEVIATION_MAX))
	{
		return value;
	}
	else
	{
		return new_value;
	}
}

限幅滤波优/缺点:

优点:能有效克服因偶然因素引起的脉冲干扰;缺点:无法抑制那种周期性的干扰、平滑度差;

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分