如何在python中获取FFT后的小bin



我使用scipy.signal.fft.rfft()来计算信号的功率谱密度。采样率为1000Hz,信号包含2000个点。所以频率仓是(1000/2)/(2000/2)=0.5Hz。但我需要分析[0-0.1]Hz中的信号。

我看到了几个推荐chirp-Z转换的答案,但我没有找到任何用Python编写的工具箱。

那么,我如何用Python完成这个小bin分析呢?或者,我可以使用类似Butterworth滤波器的方法将该信号滤波到[0-0.1]Hz吗?

非常感谢!

即使使用另一个转换,也不会生成更多数据。

如果你的采样频率为1kHz,采样频率为2s,那么你的精度为0.5Hz。你可以用啁啾来插值(或者只使用sinc((,这是你的数据在梳子样本之间的形状(,但你当前点上的数据是决定你在波瓣中的数据(在0Hz和0.5Hz之间(。

如果你想要0.1Hz的真正精度,你需要10秒的数据。

除非使用更多(更长数量(的数据,否则无法使用较小的频率仓来分离出接近的频谱峰值。

你不能只使用更窄的滤波器,因为这样的滤波器的瞬态响应会比你的数据更长。

您可以获得较小的频率仓,这些频率仓只是附近频率仓之间的平滑插值,例如,通过对数据进行零填充和使用较长的FFT,在更宽的纸上或以更高的dpi图形分辨率绘制频谱。但这不会创造更多的细节。

最新更新