在python中如何从scipy.signal强制lfilter来处理整数

时间:2012-12-11 12:38:17

标签: python filter signal-processing

我有一些我想模拟的VHDL代码片段。它使用整数FIR系数并执行整数加法。我使用的系数是从scipy.signal.firwin重新调整的。我在真实的硬件中看到了一些扰动,这些扰动来自过滤器,我想在python中进行模拟。

然而,Python用于lfilter浮点运算,这不是我需要的。我需要使用舍入来进行整数运算以获得最接近的整数并通过滤波器传播信号。

是否有这样的功能,或者我必须自己做?

感谢

.D。

1 个答案:

答案 0 :(得分:0)

numpy.convolve怎么样?

这是一个使用过滤器添加前两个样本的简单示例。

signal, coeffs = np.array([1,2,3,4,5]), np.array([1, 1])
output = np.convolve(signal, coeffs, mode='valid')

结果:

array([3, 5, 7, 9])

请注意,输出比输入短一点,因为mode=valid开关可以避免计算数据不足的样本。您可以尝试使用不同的开关来获得边缘效果所需的行为。

此函数可能在内部计算浮点数然后舍入为整数。如你所知,这对最终答案没有影响。但是,如果您的目标是节省计算时间,则应检查整数输入实际上比浮点输入更快。我打赌它是。