【发布时间】:2012-07-14 04:24:57
【问题描述】:
我正在尝试了解如何将过滤器(在本例中为 Notch(阻带)过滤器)转换为 Python,但我不知道如何。
x(n)=-2*x(n)/(-0.9*x(n) -0.9*x(n-1))
谁能帮帮我?
提前致谢。
【问题讨论】:
标签: python filter signal-processing
我正在尝试了解如何将过滤器(在本例中为 Notch(阻带)过滤器)转换为 Python,但我不知道如何。
x(n)=-2*x(n)/(-0.9*x(n) -0.9*x(n-1))
谁能帮帮我?
提前致谢。
【问题讨论】:
标签: python filter signal-processing
如果您使用的是 numpy 数组,这应该可以:
x[1:]=-2*x[1:]/(-0.9*x[1:]-0.9*x[:-1])
这会更改您的数组,但您可以轻松地将其分配给一个新数组。
y=-2*x[1:]/(-0.9*x[1:]-0.9*x[:-1])
请注意,您的算法对第 0 个元素的定义并不十分明确,因此我的翻译使 x[0] 保持不变。
编辑
将可迭代对象更改为 numpy 数组:
import numpy as np
x=np.array(iterable) #pretty easy :) although there could be more efficient ways depending on where "iterable" comes from.
【讨论】:
result = []
#prime your result, that is, add the initial values to handle indexing
lower_bound = #
upper_bound = #
for n in range(lower_bound,upper_bound):
result.append( 2*result[n]/(-0.9*result[n] -0.9*result[n-1]) )
【讨论】:
result[lower_bound] 还不存在。而且,如果 result 开始时不是一个空列表,那么您将附加到 result 而不是更改其中的值。