当尝试使用... signal.periodogram(x,fs,nfft = 4096)计算具有300000hz的采集速率的功率谱密度时,我得到的图形最高为150000Hz而不是最高300000。为什么这个最高一半价值 ?这里的采样率是什么意思?
在scipy文档中给出的示例中,采样率为10000Hz,但在图中只能看到高达5000Hz的信号。
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.periodogram.html
答案 0 :(得分:1)
如果在示例中检查f
的长度:
>>> len(f)
>>> 50001
这不是50000 Hz。这是因为默认情况下scipy.signal.periodogram
使用参数scipy.signal.welch
调用nperseg=x.shape[-1]
。这是scipy.signal.welch
的正确输入。但是,如果深入source并看到第328-329行(截至目前),您将看到输出大小为50001的原因。
if nfft % 2 == 0: # even
outshape[-1] = nfft // 2 + 1
答案 1 :(得分:1)
实值信号的频谱始终相对于Nyquist frequency(采样率的一半)对称。结果,通常不需要存储或绘制频谱的冗余对称部分。
如果您仍然想查看整个频谱,可以将return_onesided
参数设置为True
,如下所示:
f, Pxx_den = signal.periodogram(x, fs, return_onesided=False)
scipy.periodogram
documentation中提供的相同示例的结果图将覆盖预期的10000Hz频率范围: