本文章介绍了十种常用的数字信号处理中的滤波算法,并提供了每种算法在C语言中的具体实现方法。适合希望深入了解信号处理技术的读者参考学习。
限幅滤波法(又称程序判断滤波法)是一种常用的技术手段:
1. 方法:依据经验设定两次采样之间的最大允许偏差值A;每次采集新数据后进行比较,如果本次与上次之差小于或等于A,则认为当前值有效;否则该次无效,并用上一次的有效值替代。
2. 优点:能有效地消除由偶然因素导致的脉冲干扰现象。
3. 缺点:无法抑制周期性干扰且平滑度较差。
中位数滤波法:
1. 方法:连续采样N(奇数)个数据,将这些数值排序后取中间值作为最终结果。
2. 优点:可以有效应对波动性的随机干扰,并适用于温度、液位等变化缓慢的参数测量。
3. 缺点:不适合快速变化的数据如流量和速度。
算术平均滤波法:
1. 方法:连续选取N个样本进行求均值得到新的值,其中N的选择依据具体应用而定(例如对于压力信号可选4)。
2. 优点:适用于具有随机干扰的一般性信号处理,此类信号通常有稳定的基础数值并在此基础上波动变化。
3. 缺点:不适宜于测量速度慢或需要实时计算的场景,并且会消耗较多内存。
递推平均滤波法(滑动平均滤波):
1. 方法:采用固定长度为N的数据序列作为队列,每次新采样值加入尾部并移除头部旧数据;然后对当前窗口内的所有数值求均值得到新的结果。
2. 优点:具备良好的周期性干扰抑制效果以及高的平滑度,并适用于高频振荡系统。
3. 缺点:灵敏度较低且难以完全消除脉冲干扰的影响,不适合在高脉冲环境使用。
中位数平均滤波法(防脉冲干扰平均):
1. 方法:结合了“中位值滤波”与“算术平均”的特点,在连续采样N个数据后去除一个最大和最小值后再求均值得到最终结果。
2. 优点:能够有效地应对偶然出现的脉冲性干扰,消除其对测量准确性的影响。
3. 缺点:由于需要处理更多样本数量导致计算速度较慢,并且同样会消耗较多内存资源。
限幅平均滤波法:
1. 方法:先通过“限幅”步骤限制数据范围然后进行递推平均运算以获得最终结果。
2. 优点:结合了两种方法的优点,特别适合于消除脉冲干扰引起的偏差问题。
3. 缺点:较高的计算成本(内存消耗)。
一阶滞后滤波法:
1. 方法:通过调整参数a (0到1之间) 来生成新的过滤值,每次更新时采用新采样值与之前处理结果的加权平均得到当前输出。
2. 优点:对周期性干扰具有良好的抑制效果,并适用于波动频率较高的系统应用场合。
3. 缺点:存在相位延迟问题且灵敏度较低;同时不能有效滤除高于采样率一半以上的噪声信号。
加权递推平均法:
1. 方法:为不同时间的数据赋予不同的权重值,通常近期数据的比重会更大一些。然后通过计算这些加权后的均值得到新的输出。
2. 优点:对于变化缓慢的目标参数具有较好的滤波效果;可以避免临界点附近的控制器频繁切换或显示数值波动现象。
3. 缺点:不适用于快速变动的数据环境,并且在处理突发性干扰时表现不佳。
消抖滤波法:
1. 方法:设置一个计数器,用于比较每次采样值与现有有效值;如果两者一致则重置计数器;否则增加计数值直至达到上限N(溢出)。
2. 优点:对于变化缓慢的目标参数具有较好的过滤效果,并能避免临界点附近的控制器频繁切换或显示数字跳动现象。
3. 缺点:不适用于快速变动的数据环境,且有可能将干扰值误判为有效数据并引入系统中。