用python过滤长数据流

信息处理 过滤器 Python
2022-02-22 07:08:35

我正在生成一个需要过滤的时间流数据集。数据集非常大(即太大而无法一次性过滤)。我正在尝试将过滤操作分成块,但显然在每个块开始时都会出现峰值。是否有正确的方法将大型数据集拆分为较小的数据集并获得连续的结果 - 即(伪代码)。

timestream # variable with say 1e9 data points
b,a = sig.butter(1, 0.16, 'lowpass')

将时间流分成 1000 个“块”

f_t = []
for c in chunks:
   t_data = sig.lfilter(b,a,c)
   f_t.append(t_data)
1个回答

关键是使用过滤命令的“状态”参数。这个想法是过滤器命令例如lfilter可以接受指定过滤器初始状态的向量,并且还可以在过滤器计算结束时输出它们的状态。在伪代码中:

let state = vector of zeros
let filtered_data = 0
for c in chunks
    y, state_new = filter(b, a, c, state)
    append y to filtered_data
    let state = state_new
end

有关更多详细信息,请参阅文档