||The coefficients for the FIR low-pass filter producing Daubechies wavelets.|
||Return high-pass qmf filter from low-pass|
||Return (x, phi, psi) at dyadic points
||Complex Morlet wavelet.|
||Return a Ricker wavelet, also known as the “Mexican hat wavelet”.|
||Continuous wavelet transform.|
The coefficients for the FIR low-pass filter producing Daubechies wavelets.
p>=1 gives the order of the zero at f=1/2. There are 2p filter coefficients.
- p : int
- Order of the zero at f=1/2, can have values from 1 to 34.
- daub : ndarray
Return high-pass qmf filter from low-pass
- hk : array_like
- Coefficients of high-pass filter.
Return (x, phi, psi) at dyadic points
K/2**Jfrom filter coefficients.
- hk : array_like
- Coefficients of low-pass filter.
- J : int, optional
- Values will be computed at grid points
K/2**J. Default is 7.
- x : ndarray
- The dyadic points
K=0...N * (2**J)-1where
len(hk) = len(gk) = N+1.
- phi : ndarray
- The scaling function
phi(x) = sum(hk * phi(2x-k)), where k is from 0 to N.
- psi : ndarray, optional
- The wavelet function
phi(x) = sum(gk * phi(2x-k)), where k is from 0 to N. psi is only returned if gk is not None.
The algorithm uses the vector cascade algorithm described by Strang and Nguyen in “Wavelets and Filter Banks”. It builds a dictionary of values and slices for quick reuse. Then inserts vectors into final vector at the end.
morlet(M, w=5.0, s=1.0, complete=True)¶
Complex Morlet wavelet.
- M : int
- Length of the wavelet.
- w : float, optional
- Omega0. Default is 5
- s : float, optional
- Scaling factor, windowed from
+s*2*pi. Default is 1.
- complete : bool, optional
- Whether to use the complete or the standard version.
morlet : (M,) ndarray
The standard version:
pi**-0.25 * exp(1j*w*x) * exp(-0.5*(x**2))
This commonly used wavelet is often referred to simply as the Morlet wavelet. Note that this simplified version can cause admissibility problems at low values of w.
The complete version:
pi**-0.25 * (exp(1j*w*x) - exp(-0.5*(w**2))) * exp(-0.5*(x**2))
This version has a correction term to improve admissibility. For w greater than 5, the correction term is negligible.
Note that the energy of the return wavelet is not normalised according to s.
The fundamental frequency of this wavelet in Hz is given by
f = 2*s*w*r / Mwhere r is the sampling rate.
Note: This function was created before cwt and is not compatible with it.
Return a Ricker wavelet, also known as the “Mexican hat wavelet”.
It models the function:
A (1 - x^2/a^2) exp(-x^2/2 a^2),
A = 2/sqrt(3a)pi^1/4.
- points : int
- Number of points in vector. Will be centered around 0.
- a : scalar
- Width parameter of the wavelet.
- vector : (N,) ndarray
- Array of length points in shape of ricker curve.
>>> from scipy import signal >>> import matplotlib.pyplot as plt
>>> points = 100 >>> a = 4.0 >>> vec2 = signal.ricker(points, a) >>> print(len(vec2)) 100 >>> plt.plot(vec2) >>> plt.show()
cwt(data, wavelet, widths)¶
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.
- 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.
- cwt: (M, N) ndarray
- Will have shape of (len(widths), len(data)).
length = min(10 * width[ii], len(data)) cwt[ii,:] = signal.convolve(data, wavelet(length, width[ii]), mode='same')
>>> from scipy import signal >>> import matplotlib.pyplot as plt >>> t = np.linspace(-1, 1, 200, endpoint=False) >>> sig = np.cos(2 * np.pi * 7 * t) + signal.gausspulse(t - 0.4, fc=2) >>> widths = np.arange(1, 31) >>> cwtmatr = signal.cwt(sig, signal.ricker, widths) >>> plt.imshow(cwtmatr, extent=[-1, 1, 31, 1], cmap='PRGn', aspect='auto', ... vmax=abs(cwtmatr).max(), vmin=-abs(cwtmatr).max()) >>> plt.show()