我正在学习数字信号处理以实现过滤器,并使用
python轻松实现测试思路.所以我刚开始使用scipy.signal库来查找不同滤波器的脉冲响应和频率响应.
目前我正在阅读“保罗·林恩(1992)的数字信号,处理器和噪声”一书(并且发现它是学习这些东西的一个惊人的资源).在本书中,他们有一个过滤器,其传递函数如下所示:
我将分子和分母除以得到以下等式:
然后我使用Scipy实现了这个:
NumeratorZcoefs = [1, -1, 1, -1]
DenominatorZcoefs = [1, 0.54048, -0.62519, -0.66354, 0.60317, 0.69341]
FreqResponse = scipy.signal.freqz(NumeratorZcoefs, DenominatorZcoefs)
fig = plt.figure(figsize = [8, 6])
ax = fig.add_subplot(111)
ax.plot(FreqResponse[0], abs(np.array(FreqResponse[1])))
ax.set_xlim(0, 2*np.pi)
ax.set_xlabel("$\Omega$")
并生成如下图:
然而,在本书中,频率响应显示如下:
它们的形状相同,但是对于2个地块,在~2.3和0.5处的峰值比率非常不同,有人可能会说明为什么会这样吗?
编辑:
为了补充一点,我刚刚实现了一个函数来