Python 低通滤波器
我正在尝试对我的数据使用低通滤波器。我的样本数据是每分钟的,我想用1440(每日)的时间常数对其进行过滤。 它只是编写一个for循环来计算过滤并将数据附加到y(过滤数据)列表中 以下是我编写的代码:Python 低通滤波器,python,python-2.7,filtering,signal-processing,Python,Python 2.7,Filtering,Signal Processing,我正在尝试对我的数据使用低通滤波器。我的样本数据是每分钟的,我想用1440(每日)的时间常数对其进行过滤。 它只是编写一个for循环来计算过滤并将数据附加到y(过滤数据)列表中 以下是我编写的代码: 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
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
过滤器可以更快地完成这项工作;) 您需要添加数据,就像您为u
所做的那样。您还可以用更简洁的方式编写代码:
u = [0]
y = [0]
for x in OD_deltaT:
u.append(x)
y.append((1-a)*y[-1])+a*x)
当然,
scipy
过滤器可以更快地完成这项工作;) 你认为u,y=[0],]
能完成什么?关于u
?我不确定它是否会…y的列表为空,u的初始值为零。您可以使用scipy的过滤器:好的,那么<代码>y是[]
。。。那么你认为y[1]=u[1]
会怎么样。。。你的错误是什么?有关索引超出范围的内容?您认为u,y=[0],]
可以实现什么?关于u
?我不确定它是否会…y的列表为空,u的初始值为零。您可以使用scipy的过滤器:好的,那么<代码>y是[]
。。。那么你认为y[1]=u[1]
会怎么样。。。你的错误是什么?关于索引超出范围的内容?非常感谢!你是对的,scipy做得更快。但是了解他们在做什么是一个很好的练习,特别是当你进入非LTI的世界,scipy再也帮不了你了。为什么y[-1]?在我的公式中,我的意思是在当前项之前取一个y。列表中的最后一个是当前项之前的一个,因为我们正要添加一个新项。非常感谢!你是对的,scipy做得更快。但是了解他们在做什么是一个很好的练习,特别是当你进入非LTI的世界,scipy再也帮不了你了。为什么y[-1]?在我的公式中,我的意思是在当前项之前取一个y。列表中的最后一个是当前项之前的一个,因为我们正要添加一个新项。