为功率谱选择精确的频率间隔

问题描述 投票:1回答:1

我想比较两个随机过程的时间轨迹的功率谱,但是返回的频率范围不同。

如何选择该频率范围,如何修改?

更具体地说,我的工作是:

from scipy import signal as sgn

spectrum1=sgn.periodogram(signal1,fs=fs1)
spectrum2=sgn.periodogram(signal2,fs=fs2)

并且我的问题是,spectrum1[0]相对于spectrum2[0]具有明显不同的范围。

python numpy fft spectrum
1个回答
0
投票

periodogram使用FFT(快速傅立叶变换)计算,该方法实现了DFT(离散傅立叶变换)。周期信号的DFT具有离散的频率,基本频率的所有倍数都与帧Tf_0=1/T的持续时间一致。

因此,要获得相同的频率,帧的持续时间必须相似,且至少为彼此的倍数:

len(signal1)/fs1 = k*len(signal2)/fs2

可能需要截断其中一个数组。也可以尝试nfft的参数scipy.signal.periodgram(),要求变为:

scipy.signal.periodgram()

如果帧的持续时间与信号的实际周期不一致,或者信号不是周期性的,则nfft1/fs1 = k*nfft2/fs2 可能会限制频谱泄漏的影响。它非常有用,可以将其作为参数集成到windowing中。您可以尝试使用scipy.signal.periodgram()列出的值scipy.signal.periodgram()'hann'

如果采样率不相似,则可能需要重新采样信号。为此可以使用'parzen'。它还具有参数here,并利用FFT进行重采样,从而避免了线性插值会触发的一些错误。

© www.soinside.com 2019 - 2024. All rights reserved.