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 owt
s 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 exactlyQ
wavelets 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β=6
the 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
.normalization
orp::Real=Inf
: the p-norm preserved as the scale changes, so if we're scaling by $s$,normalization
has valuep
, and the mother wavelet is $\psi$, then the resulting wavelet is $s^{1/p}\psi(^{t}/_{s})$. The default scaling,Inf
gives all the same maximum value in the frequency domain. Valid range is $(0,\infty]$, though $p<1$ isn't actually preserving a norm.