cupyx.scipy.signal.cwt#

cupyx.scipy.signal.cwt(data, wavelet, widths)[源代码][源代码]#

连续小波变换。

data 执行连续小波变换,使用 wavelet 函数。CWT 使用 wavelet 函数对 data 进行卷积,该函数由宽度参数和长度参数表征。

参数:
  • data ((N,) ndarray) – 要执行变换的数据。

  • wavelet (function) – 小波函数,它应该接受2个参数。第一个参数是返回向量的点数(len(wavelet(length,width)) == length)。第二个是宽度参数,定义小波的大小(例如,高斯的标准差)。请参阅 ricker,它满足这些要求。

  • widths ((M,) sequence) – 用于变换的宽度。

返回:

cwt – 将具有 (len(widths), len(data)) 的形状。

返回类型:

(M, N) ndarray

备注

length = min(10 * width[ii], len(data))
cwt[ii,:] = cupyx.scipy.signal.convolve(data, wavelet(length,
                            width[ii]), mode='same')

示例

>>> import cupyx.scipy.signal
>>> import cupy as cp
>>> import matplotlib.pyplot as plt
>>> t = cupy.linspace(-1, 1, 200, endpoint=False)
>>> sig  = cupy.cos(2 * cupy.pi * 7 * t) + cupyx.scipy.signal.gausspulse(t - 0.4, fc=2)
>>> widths = cupy.arange(1, 31)
>>> cwtmatr = cupyx.scipy.signal.cwt(sig, cupyx.scipy.signal.ricker, widths)
>>> plt.imshow(abs(cupy.asnumpy(cwtmatr)), extent=[-1, 1, 31, 1],
               cmap='PRGn', aspect='auto', vmax=abs(cwtmatr).max(),
               vmin=-abs(cwtmatr).max())
>>> plt.show()