所以,在我最后两个问题之后,我来谈谈我的实际问题。也许有人在我的理论程序中发现了错误,或者我在编程上做了些错事。在
我使用scipy.signal(使用firwin函数)在Python中实现带通滤波器。我的原始信号包括两个频率(w_1=600Hz,w_2=800Hz)。可能会有更多的频率所以我需要一个带通滤波器。在
在这个例子中,我想过滤掉大约600hz的频带,所以我取了600+/-20Hz作为截止频率。当我实现滤波器并使用lfilter在时域中再现信号时,正确的频率被过滤了。在
为了消除相移,我用scipy.signal.freqz绘制了频率响应图,返回值为firwin的h作为分子,1作为预定义的denumerator。
如freqz文档中所述,我还绘制了相位(=doc中的角度),并且能够查看频率响应图,以获得滤波信号频率600hz的相移。在
所以相位延迟t
tΒp=—(Tetha(w))/(w)
不幸的是,当我把这个相位延迟加到滤波信号的时间数据中时,它并没有得到与原始600hz信号相同的相位。在
我加了密码。奇怪的是,在消除部分代码以保持最小值之前,过滤后的信号以正确的振幅开始-现在情况更糟了。在################################################################################
#
# Filtering test
#
################################################################################
#
from m