python - 低通滤波器-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
过滤器会更快地做到这一点;)
推荐阅读
- javascript - SSE 的 EventSource 和 XMLHttpRequest 之间的区别
- python - 从字母系统更改的点拆分字符串
- ansible - 如何使用 Ansible “啜饮”多个文件
- android - ndk r20 ld:ld:错误:找不到-lpthread
- extbase - TYPO3 9.5 如何从存储的 FileReference 中获取文件
- docker - Do I need to add HTTPS registries to Docker daemon?
- kubernetes-helm - Helm is not deleting release
- screen - 我的代码不起作用 - tizen.power.request("SCREEN", "SCREEN_NORMAL");
- php - PHP 项目中的 Laravel 迁移
- php - 如何从附加到特定 user_id 的数据透视表中获取记录到其他表中