1

我试图了解如何将过滤器(在本例中为 Notch(阻带)过滤器)转换为 Python,但我不知道如何。

x(n)=-2*x(n)/(-0.9*x(n) -0.9*x(n-1))

任何人都可以帮助我吗?

提前致谢。

4

2 回答 2

3

如果您使用的是 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.
于 2012-07-14T16:34:24.493 回答
0
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]) )
于 2012-07-14T16:34:30.750 回答