CWT Construction
ContinuousWavelets.CWT — TypeCWT(wave::ContWaveClass, Q=8, boundary::WaveletBoundary=SymBoundary(),
averagingType::Average = Father(), averagingLength::Int = 4, frameBound=1, p::N=Inf, β=4)Wavelets.WT.wavelet — Methodwavelet(wave::ContWaveClass; Q=8, boundary::WaveletBoundary=DEFAULT_BOUNDARY,
averagingType::Average = Father(), averagingLength = 4,
frameBound=1, p=Inf, β=4, kwargs...)A constructor for the CWT type, using keyword rather than positional options.
The ContWaveClass type defines the kind of mother and father wavelet function. The CWT type, in contrast, defines everything else that goes into performing a continuous wavelet transform besides that choice. The function wavelet() has been overloaded to work with ContWaveClass in much the same way it works for the owts of Wavelets.jl. In more detail, the parameters, along with their defaults, are:
wave::ContWaveClass: is a type of continuous wavelet, see the Available Wavelet Families.scalingFactor,s, orQ::Real=8.0: the number of wavelets between the octaves $2^J$ and $2^{J+1}$ (defaults to 8, which is most appropriate for music and other audio). Valid range is $(0,\infty)$.β::Real=4.0: As using exactlyQwavelets per octave leads to excessively many low-frequency wavelets,βvaries the number of wavelets per octave, with larger values ofβcorresponding to fewer low frequency wavelets(see Wavelet Frequency Spacing for details). Valid range is $(1,\infty)$, though aroundβ=6the spacing is approximately linear in frequency, rather than log-frequency, and begins to become concave after that.boundary::WaveletBoundary=SymBoundary(): The default boundary condition isSymBoundary(), implemented by appending a flipped version of the vector at the end to eliminate edge discontinuities. See Boundary Conditions for the other possibilities.averagingType::Average=Father(): determines whether or not to include the averaging function, and if so, what kind of averaging. The options areFather: use the averaging function that corresponds to the mother Wavelet.Dirac: use the sinc function with the appropriate width.NoAve: don't average. this has one fewer filters than the otheraveragingTypes
averagingLength::Int=4: the number of wavelet octaves that are covered by the averaging,frameBound::Real=1: gives the total norm of the whole collection, corresponding to the upper frame bound; if you don't want to impose a particular bound, setframeBound<0.normalizationorp::Real=Inf: the p-norm preserved as the scale changes, so if we're scaling by $s$,normalizationhas valuep, and the mother wavelet is $\psi$, then the resulting wavelet is $s^{1/p}\psi(^{t}/_{s})$. The default scaling,Infgives all the same maximum value in the frequency domain. Valid range is $(0,\infty]$, though $p<1$ isn't actually preserving a norm.