拟合与滤波算法:(三)消抖滤波

消抖滤波

(一) 算法说明

消抖滤波算法是一种针对数据抖动问题的滤波方法。数据抖动是由于数据不稳定、外界干扰等因素,导致的数据短时间内频繁振动的现象。通过抑制这些短期的波动,使数据平滑、稳定。

(二) 实现流程

计数法消抖滤波,首先进行参数初始化,设置计数器 count 和阈值 N 。计数器用于记录数据连续在同一状态下保持的次数,初始值设为 0 。阈值表示数据需要保持的最小连续次数,根据具体数据的特性来设置。将每次读取输入数据和当前稳定状态比较。

对数据进行消抖滤波处理的具体步骤如下:

1)和前一个数据相同:说明处于稳定状态。计数器归零,输出数据保持不变。

2)和前一个数据不同:说明数据不稳定。计数器增加 1 ,输出数据 = 前一个数据。计数器增加后需检查是否已达到阈值,如果计数器的数值达到或超过阈值,则认为数据已趋于稳定,系统将 current_state 更新为 input_signal ,并将 output_state 也更新为 current_state 。随后将计数器归零,以便重新检测后续数据的稳定性。如果计数器未达到阈值,则不进行任何更改,继续等待数据达到稳定的判断条件,保持 output_state 的原状态不变。

(三) 阈值的设置

1)阈值设置较大
  • 场景:
    • 如果数据中的 噪声较多 ,可能需要设置较高的阈值来过滤掉这些噪声。
    • 如果系统需要高度 稳定 ,可以设置较高的阈值来减少误报和误动作。
  • 优缺点:

    • 优点:能够更有效地过滤掉短期的噪声和波动,使滤波后的数据更加平滑和稳定。

    • 缺点:可能导致系统对真实变化的响应速度变慢,因为需要更多的连续相同数据点才能触发状态变化。:

2)阈值设置较小的情形
  • 场景:
    • 如果数据变化较为频繁,但希望系统能够快速响应真实变化,那么阈值应设置得相对较低。
    • 如果系统需要 快速响应 ,并且可以接受一定的误报率,那么阈值可以设置得相对较低。
  • 优缺点:
    • 优点:系统能够快速响应数据中的真实变化,因为较少的连续相同数据点就能触发状态变化。
    • 缺点:可能更容易受到噪声和短期波动的影响,导致滤波后的数据仍然存在一定的抖动。

(四) 代码

def debounce_filter(data, threshold):
    """
    消抖滤波。
    :param
    	data (list): 要滤波的数组,包含连续的监测数据。
    	threshold (int): 阈值,表示数据需要保持的最小连续次数。
    :return
    	filtered_data: 滤波后的数据数组。
    """
    if not data or threshold < 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值