i执行短时傅立叶变换,如下所述。
from scipy.signal import stft
f, t, Zxx = stft(data)
据我了解,我得到以下对象:(1)一个1D数组,其中包含频率值,(2)包含时间值的1D数组,以及(3)一个2D数组,其中包含给定频率的强度的2D数组给定时间。
我的问题是关于如何控制/修改频率的网格。根据默认,我获得了129个频率的网格。我想做的第一件事是增加频率的数量(具有更精细的网格)。
除此之外,能够指定应该使用哪些频率范围的好。
正如Uvar所说,可观察频率的范围受参数nperseg
的限制。给定n个样品,只能观察n/2 + 1
频率,即具有k = 0,1,2,...,n/2
的频率fs*k/n
,其中fs
是采样频率,而n
是nperseg
。由于别名而丢失了更高的任何东西。这是一个数学限制,Scipy对此无能为力。要具有足够颗粒状的频率列表,请增加nperseg
。默认值nperseg = 256
给出(256/2) 1 = 129频率。
离散的傅立叶变换使您可以一次可观察到的所有可观察到的频率,因此无法选择自定义范围。当然,您可以将输出f
切成些,以选择感兴趣的频率范围。