| 1234567891011121314151617181920212223242526272829 |
- import numpy as np
- from scipy.signal._signaltools import convolve
- def _ricker(points, a):
- A = 2 / (np.sqrt(3 * a) * (np.pi**0.25))
- wsq = a**2
- vec = np.arange(0, points) - (points - 1.0) / 2
- xsq = vec**2
- mod = (1 - xsq / wsq)
- gauss = np.exp(-xsq / (2 * wsq))
- total = A * mod * gauss
- return total
- def _cwt(data, wavelet, widths, dtype=None, **kwargs):
- # Determine output type
- if dtype is None:
- if np.asarray(wavelet(1, widths[0], **kwargs)).dtype.char in 'FDG':
- dtype = np.complex128
- else:
- dtype = np.float64
- output = np.empty((len(widths), len(data)), dtype=dtype)
- for ind, width in enumerate(widths):
- N = np.min([10 * width, len(data)])
- wavelet_data = np.conj(wavelet(N, width, **kwargs)[::-1])
- output[ind] = convolve(data, wavelet_data, mode='same')
- return output
|