低通滤波器-Python
Low pass filter-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.
提前致谢!
您需要附加数据,就像您为 u
所做的那样。你也可以把代码写得更简洁一点:
u = [0]
y = [0]
for x in OD_deltaT:
u.append(x)
y.append((1-a)*y[-1])+a*x)
当然,scipy
过滤器会更快;)
我正在尝试对我的数据使用低通滤波器。我的示例数据是每分钟的,我想用 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.
提前致谢!
您需要附加数据,就像您为 u
所做的那样。你也可以把代码写得更简洁一点:
u = [0]
y = [0]
for x in OD_deltaT:
u.append(x)
y.append((1-a)*y[-1])+a*x)
当然,scipy
过滤器会更快;)