dffzh 发表于 2025-4-17 08:48

【嵌入式系统软件设计】数字滤波算法:终章

本帖最后由 dffzh 于 2025-4-17 08:53 编辑

#申请原创# #技术资源#
@21小跑堂

在之前的一篇文章(链接:https://bbs.21ic.com/icview-3443358-1-1.html)里,作者详细介绍了数字滤波算法的一些基本概念以及五种常用的单滤波算法,文章结尾提到了复合滤波算法,那何谓复合滤波算法呢?本文章就从复合滤波算法入手,与大家说明一下几种常见的复合滤波算法,并从应用及案例解析方面阐述如何选择单滤波算法或复合滤波算法,最后对这两篇文章进行一个简单的总结。

一、 复合滤波算法以下将从原理、取值、优点、缺点和应用等方面介绍常用的复合滤波算法,如下图所示:
1、防脉冲干扰平均算法(去极值平均滤波算法)原理:先连续采样N个值,升序排列后,去掉极小值和极大值,将剩余值求平均后得到的值作为有效值;取值:采样次数N较小时,平滑度低,灵敏度高;N较大时,平滑度高,灵敏度低;一般经验取N=10;优点:可以消除脉冲干扰;缺点:有可能无法去掉偏差较大的采样值而影响平均值,计算速度慢,不适用于实时性要求较高的场景;应用:相比单滤波算法,优先选择复合滤波算法;滤波效果展示:去掉1个极小值和1个极大值的方式

参考代码:
注意:去极值的常用方法:1、去掉1个极小值和1个极大值;2、去掉n个极小值和n个极大值;根据采样次数以及自己对采集系统的了解程度,配置去极值的个数,算法接口可以加个参数 uch_FilterNum,来表示去极值个数。
2、限幅平均滤波算法原理:先限幅,后平均;参考限幅滤波算法和算术平均滤波算法;取值:采样次数,限幅阈值;优点:克服因偶然因素引起的脉冲干扰或随机干扰;缺点:计算速度慢,不适用于实时性要求较高的场景;占用RAM空间较大;滤波效果展示:限幅阈值定为0.5

注意:1、如果能确定限幅阈值,则使用效果比去极值滤波的好;2、对于复杂的采集系数,可以考虑如下滤波机制:限幅+去极值+平均。

3、滑动平均滤波算法原理:把连续N个采样值看成一个先进先出的队列,每次采集到的一个新数据放到队尾,并扔掉队首数据,然后把N个数据求平均,即得到滤波结果;取值:滑动窗口或滤波阶数,决定了降噪效果;优点:可以抑制周期性干扰,平滑度高;速度快,能保证系统实时性;缺点:灵敏度低,无法抑制偶发性脉冲干扰;不适用于脉冲干扰较为严重的场景;应用:对实时性要求较高的场合;滤波效果展示:对光谱校正系数进行滤波前后的效果对比:
不同滑动窗口的滤波效果对比:
周期性噪声干扰信号的滤波效果对比:

二、 应用及案例解析加上单滤波算法一起,也介绍了不少滤波算法,那到底实际应用时应该怎么选择呢?我们继续看。在阐述应用及案例解析前,先从采样输出比、抗毛刺干扰能力和抗噪声干扰能力等方面让大家看一下各种滤波算法的对比情况:
现在大家有些基本概念了!其实在实际应用时,一般可以从需求、系统和仿真三个方面综合考虑来选择合适的滤波算法,但尽量优先考虑复合滤波算法:



比如在处理温度传感器或湿度传感器的数据时,就可以参考如下思路进行:
在处理CCD/CMOS传感器的数据时,就可以参考如下思路进行:

三、 总结以上从理论和仿真效果上介绍了复合滤波算法,并结合应用案例向大家阐述了如何根据具体应用选择相对合适的滤波算法,针对这两篇文章,需要有个简要的总结说明如下:1、嵌入式系统应用中,系统获取的传感器数据由于存在低频或高频等噪声及毛刺干扰,无法直接被使用,必须先通过滤波处理,而使用的滤波算法可以是一种或者多种相结合;2、要把握滤波的“度”,即合理的滤波可以有效减少噪声干扰,过度的滤波可能会影响整个系统对数据的实时性要求;3、不同的滤波算法有各自的优缺点,至于使用哪种,可以综合考虑系统环境和实时性等参数,或者调试阶段可以使用多种滤波算法来进行测试对比,从而确定最优方案。

飞思啦 发表于 2025-4-17 09:43

学到了,滤波方法有很多,选择适合自己的才是最好的,不同的数据有不同的滤波方法,选错了方法,反而适得其反

dffzh 发表于 2025-4-17 13:14

飞思啦 发表于 2025-4-17 09:43
学到了,滤波方法有很多,选择适合自己的才是最好的,不同的数据有不同的滤波方法,选错了方法,反而适得其 ...
是的,不同场景,不同需求,不同应用等, 可以根据情况进行选择;
还有高阶滤波算法,比如FIR数字滤波和小波变换等
页: [1]
查看完整版本: 【嵌入式系统软件设计】数字滤波算法:终章