我尝试用Python创建一个五阶FIR滤波器,由以下差分方程描述(抱歉,暗模式用户,但SO上尚不支持LaTeX):
def filter(x):
h = np.array([-0.0147, 0.173, 0.342, 0.342, 0.173, -0.0147])
y = np.zeros_like(x)
buf_array = np.zeros_like(h)
buf = 0.0
for n in enumerate(x):
for k in enumerate(h):
buf = h[k]*x[n-k]
buf_array[k] = buf
y[n] = np.sum(buf_array)
return y
使用筛选器时,Traceback会将我引导到以下行:
10 for n in enumerate(x):
11 for k in enumerate(h):
---> 12 buf = h[k]*x[n-k]
13 buf_array[k] = buf
15 y[n] = np.sum(buf_array)
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
我试过摆弄索引和所有的东西,但是还没有设法理解为什么会引起这个错误。
短暂性脑缺血
1条答案
按热度按时间ugmeyewa1#
正如有人在评论中建议的那样,这种情况下的使用需要循环遍历索引和元素本身,因为使用
for index in enumerate(ndarray)
将导致index
成为元组而不是整数。此外,建议使用for index, item in enumerate(ndarray)
,如下所示: