【问题标题】:power spectral density-scipy.signal功率谱密度-scipy.signal
【发布时间】:2019-02-20 16:12:43
【问题描述】:

在尝试使用 ... 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

【问题讨论】:

    标签: python scipy signal-processing


    【解决方案1】:

    实值信号的频谱始终相对于Nyquist frequency(采样率的一半)对称。因此,通常不需要存储或绘制频谱的冗余对称部分。

    如果您仍想查看整个频谱,可以将return_onesided 参数设置为True,如下所示:

    f, Pxx_den = signal.periodogram(x, fs, return_onesided=False)
    

    scipy.periodogram documentation 中提供的相同示例的结果图将覆盖预期的 10000Hz 频率范围:

    【讨论】:

      【解决方案2】:

      如果您检查示例中f 的长度:

      >>> len(f)
      >>> 50001
      

      这不是 50000 赫兹。这是因为scipy.signal.periodogram 默认使用参数nperseg=x.shape[-1] 调用scipy.signal.welch。这是scipy.signal.welch 的正确输入。但是,如果深入source 并查看第 328-329 行(截至目前),您将看到输出大小为 50001 的原因。

      if nfft % 2 == 0:  # even
         outshape[-1] = nfft // 2 + 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多