cupyx.scipy.signal.cwt#

cupyx.scipy.signal.cwt(data, wavelet, widths)[source]#

Continuous wavelet transform.

Performs a continuous wavelet transform on data, using the wavelet function. A CWT performs a convolution with data using the wavelet function, which is characterized by a width parameter and length parameter.

Parameters:
  • data ((N,) ndarray) – data on which to perform the transform.

  • wavelet (function) – Wavelet function, which should take 2 arguments. The first argument is the number of points that the returned vector will have (len(wavelet(length,width)) == length). The second is a width parameter, defining the size of the wavelet (e.g. standard deviation of a gaussian). See ricker, which satisfies these requirements.

  • widths ((M,) sequence) – Widths to use for transform.

Returns:

cwt – Will have shape of (len(widths), len(data)).

Return type:

(M, N) ndarray

Notes

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

Examples

>>> 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()