[英]apply a filter to x[n] in python
将Python中的FIR滤波器应用于x[n]
(所有n <= N
)的最聪明方法是什么?
y[n] = a[0]*x[n] + a[1]*x[n-1] + a[2]*x[n-2] + ... + a[K]*x[n-K]
我知道如何用双做到这一点for
循环,但我想有更多的“美丽”的方式把它写在Python?
这避免了使用索引:
y[n] = sum(aa * xx for aa, xx in zip(a, x[n::-1]))
关于zip
一个很酷的事情是它的输出长度将是两个输入中较短者的长度。
要为所有n
执行此操作,最简单的方法是使用外部循环的索引:
y = [sum(aa * xx for aa, xx in zip(a, x[n::-1])) for n in xrange(0, len(x))]
如果你想只包括“有效”术语(在a
所有系数使用和的术语xrange(len(a), len(x))
你可以用xrange(0, len(x))
的东西替换xrange(0, len(x))
) 。
如果这是你要做很多事情,或做大量输入,我会建议检查Numpy,特别是它的convolve
函数。 这个实现将比我在这里描述的快得多。
对于信号处理,您应该真正使用NumPy。 特别是,过滤信号只是卷积 ,使其成为一个单行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.