问题描述
我对过滤时间序列有很多了解,但我真的很难正确理解 scipy scipy.signal.filtfilt
。
特别是它的参数 a 和 b。 例如,我应该如何重现以下过滤器? 即使使用其他库,如果更容易。
谁能帮帮我?我给你一个起点:
np.random.seed(123)
N = 100
rng = pd.date_range('2019-01-01',freq='min',periods=N)
df = pd.DataFrame(np.random.rand(N,1),index=rng)
解决方法
您说您的绘图显示了低通线性滤波器。我假设该图显示了 FIR filter 的系数。如果是这样,您可以将这些系数作为 scipy.signal.lfilter
(或 b
,但将 scipy.signal.filtfilt
与 FIR 滤波器一起使用可能不是您想要的)的 filtfilt
参数传递。将 a
参数设置为 1。
您还可以将滤波器应用于具有卷积函数的信号,例如 numpy.convolve
、scipy.signal.convolve
或 scipy.ndimage.convolve1d
。看一下文章Applying a FIR Filter(但请注意,那里显示的性能结果不是最新的——NumPy 和 SciPy 都在不断发展,那里讨论的不同方法的相对性能可能会因版本而异) .