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 (str 或 tuple 或 array_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 函数。如果它是一个函数,则接受一个段并返回去趋势后的段。如果 detrend 为 False,则不进行去趋势。默认为 '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]。
参考文献