找回密码
 请使用中文注册

手机号码,快捷登录

手机号码,快捷登录

查看: 386|回复: 0

嵌入式常见的10种软件滤波方法(1)

[复制链接]
阅读字号:

1374

主题

50

回帖

2万

积分

超级版主

积分
27551
发表于 2023-11-14 20:22:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
前言介绍:

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

硬件滤波介绍:

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

软件滤波介绍:

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

10种经典的软件滤波方法包括:
  • 限幅滤波法
  • 中位值滤波法
  • 算术平均滤波法
  • 递推平均滤波法
  • 中位值平均滤波法
  • 限幅平均滤波法
  • 一阶滞后滤波法
  • 加权递推平均滤波法
  • 消抖滤波法
  • 限幅消抖滤波法
限幅滤波介绍:

限幅滤波基本思路是根据被测对象确定相邻两次采样所允许的最大差值△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;
        }
}
限幅滤波优/缺点:

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

.
您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-6-19 13:37 , Processed in 0.166375 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表