如何在短时间内设置频率网格从Scipy转换



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是采样频率,而nnperseg。由于别名而丢失了更高的任何东西。这是一个数学限制,Scipy对此无能为力。要具有足够颗粒状的频率列表,请增加nperseg。默认值nperseg = 256给出(256/2) 1 = 129频率。

离散的傅立叶变换使您可以一次可观察到的所有可观察到的频率,因此无法选择自定义范围。当然,您可以将输出f切成些,以选择感兴趣的频率范围。

最新更新