cupyx.scipy.signal.welch#

cupyx.scipy.signal.welch(x, fs=1.0, window='hann', nperseg=None, noverlap=None, nfft=None, detrend='constant', return_onesided=True, scaling='density', axis=-1, average='mean')[source]#

使用 Welch 方法估计功率谱密度。

Welch 方法 [1] 通过将数据分割成重叠的段,计算每个段的修改周期图,然后对这些周期图进行平均来估计功率谱密度。

参数:
  • x (array_like) – 测量值的时间序列

  • fs (float, optional) – x 时间序列的采样频率。默认为 1.0。

  • window (strtuplearray_like, optional) – 要使用的窗口。如果 window 是字符串或元组,则将其传递给 get_window 以生成窗口值,默认情况下这些值为 DFT 偶数。有关窗口列表和所需参数,请参阅 get_window。如果 window 是 array_like,则将直接用作窗口,其长度必须等于 nperseg。默认为 Hann 窗口。

  • nperseg (int, optional) – 每个段的长度。默认为 None,但如果 window 是 str 或 tuple,则设置为 256;如果 window 是 array_like,则设置为窗口的长度。

  • noverlap (int, optional) – 段之间的重叠点数。如果为 None,则 noverlap = nperseg // 2。默认为 None

  • nfft (int, optional) – 使用的 FFT 长度,如果需要零填充 FFT。如果为 None,则 FFT 长度等于 nperseg。默认为 None

  • detrend (str 或 function 或 False, optional) – 指定如何对每个段进行去趋势。如果 detrend 是字符串,则作为 type 参数传递给 detrend 函数。如果它是一个函数,则接受一个段并返回去趋势后的段。如果 detrendFalse,则不进行去趋势。默认为 'constant'。

  • return_onesided (bool, optional) – 如果为 True,则返回实数数据的一侧频谱。如果为 False,则返回双侧频谱。默认为 True,但对于复数数据,始终返回双侧频谱。

  • scaling ({ 'density', 'spectrum' }, optional) – 选择计算功率谱密度 ('density') 或功率谱 ('spectrum')。如果 x 以 V 为单位,fs 以 Hz 为单位,则对于 'density',Pxx 的单位为 V**2/Hz;对于 'spectrum',Pxx 的单位为 V**2。默认为 'density'

  • axis (int, optional) – 计算周期图的轴;默认为最后一个轴(即 axis=-1)。

  • average ({ 'mean', 'median' }, optional) – 平均周期图时使用的方法。默认为 'mean'。

返回值:

  • f (ndarray) – 采样频率数组。

  • Pxx (ndarray) – x 的功率谱密度或功率谱。

另请参阅

periodogram

简单、可选修改的周期图

lombscargle

用于非均匀采样数据的 Lomb-Scargle 周期图

备注

适当的重叠量取决于窗口的选择和您的需求。对于默认的 Hann 窗口,50% 的重叠是准确估计信号功率与不过度重复计算数据之间的合理权衡。更窄的窗口可能需要更大的重叠。

如果 noverlap 为 0,则此方法等同于 Bartlett 方法 [2]

参考文献