【发布时间】:2018-05-22 16:24:14
【问题描述】:
我正在尝试在 Python 中设置一个过滤器,但我遇到了一些基本问题。
这是我必须实现的功能:
y[n] = (1 − λ) · x[n] + λ · y[n − 1]
我正在读取一个 m 文件并应用过滤器。
代码如下:
import sys
import numpy as np
import matplotlib.pyplot as plt
y = np.loadtxt('acs712_192us.m')
size = len(y)
x = np.arange(0, size)
out = []
lamb = 0.9
for i in range(0, len(y)):
out.append(((1-lamb) * y[i]) + (lamb * out[i - 1]))
plt.plot(x, y)
plt.plot(x, out)
plt.show()
当我运行这个程序时,得到以下错误:
文件“main_LI.py”,第 15 行,in out.append(((1-lamb) * y[i]) + (lamb * out[i - 1])) IndexError: list index out of range
我知道我无法访问 out[-1] 位置(在第一个循环中),也许这是问题所在?
有人有什么建议吗?
谢谢你们!
【问题讨论】:
-
你的m文件包含什么?
-
你的循环关系似乎没有起点。
-
我怀疑
out中应该有一个初始值。 -
该文件是一个 .txt 文件,包含 512 个值 (0 - 511)。我可以得到 y[i]
-
user2357112 所说的。
out[0]应该是什么?
标签: python arrays filter index-error