首页 > 解决方案 > 低通滤波器-Python

问题描述

我正在尝试对我的数据使用低通滤波器。我的样本数据是每分钟的数据,我想用 1440(每天)的时间常数对其进行过滤。它只是编写一个 for 循环来计算过滤并将数据附加到 y(filtered data) 列表中。

以下是我编写的代码:

OD_deltaT=df["OD_deltaT"].values.tolist()
#a=1/(timeconstant)+1
a=1/1441
u, y=[0], []
for i, x in enumerate(OD_deltaT,1):
    u.append(x)
    y[1]=u[1]
    y[i]=(1-a)*y[i-1]+(a)*u[i]

但我得到这个错误:

list index out of range.  

先感谢您!

标签: pythonpython-2.7filteringsignal-processing

解决方案


您需要附加您的数据,就像您为u. 您还可以用更简洁的方式编写代码:

u = [0]
y = [0]
for x in OD_deltaT:
    u.append(x)
    y.append((1-a)*y[-1])+a*x)

当然,scipy过滤器会更快地做到这一点;)


推荐阅读