我正在使用scipy.signal.fft.rfft()
来计算信号的功率谱密度。采样率为1000Hz,信号包含2000个点。因此频率bin是(1000/2)/(2000/2)=0.5Hz
。但是我需要分析 [0-0.1] Hz 信号。
我看到了一些推荐线性调频Z变换的答案,但是我没有找到用Python编写的任何工具箱。
那么如何在Python中完成此小仓分析?还是可以像 Butterworth滤波器一样将信号过滤到[0-0.1] Hz?
非常感谢!
答案 0 :(得分:1)
即使您使用其他变换,也不会产生更多数据。
如果您有1kHz的采样和2s的采样,则您的精度为0.5Hz。您可以使用chirpz进行插值(或仅使用sinc(),这就是梳子样本之间的数据形状),但是当前点上的数据是确定叶中有什么的数据(之间0Hz和0.5Hz)。
如果要达到0.1Hz的真实精度,则需要10s的数据。
答案 1 :(得分:1)
除非使用更多(更大量)数据,否则您将无法获得更小的频率段来分离出接近的频谱峰值。
您不能只使用更窄的滤波器,因为这样的滤波器的瞬态响应将比您的数据更长。
您可以获得较小的频率仓,这些频率仓只是附近频率仓之间的平滑插值,例如,通过对数据进行零填充并使用更长的FFT,可以在更宽的纸张上或以更高的dpi图形分辨率绘制频谱。但这不会创造更多细节。