H=freqwavelet(name,L) H=freqwavelet(name,L,scale) [H,info]=freqwavelet(...)
name | Name of the wavelet |
L | System length |
H | Frequency domain wavelet |
info | Struct with additional outputs |
freqwavelet(name,L) returns peak-normalized "mother" frequency-domain wavelet name for system length L. The basic scale is selected such that the peak is positioned at the frequency 0.1 relative to the Nyquist rate (fs/2).
The supported wavelets that can be used in place of name (the actual equations can be found at the end of this help):
'cauchy' | Cauchy wavelet with alpha=100. Custom order=(alpha-1)/2 (with alpha>1) can be set by {'cauchy',alpha}. The higher the order, the narrower and more symmetric the wavelet. A numericaly stable formula is used in order to allow support even for very high alpha e.g. 10^6. |
'morse' | Morse wavelet with alpha=100 and gamma=3. Both parameters can be set directly by {'morse',alpha,gamma}. alpha has the same role as for 'cauchy', gamma is the 'skewness' parameter. 'morse' becomes 'cauchy' for gamma=1. |
'morlet' |
|
freqwavelet(name,L,scale) returns a "dilated" version of the wavelet. The nonzero scalar scale controls both the bandwidth and the center frequency. Values greater than 1 make the wavelet wider (and narrower in the frequency domain), values lower than 1 make the wavelet narrower. The center frequency is moved to`0.1/scale`. The center frequency is limited to the range of "positive" frequencies ]0,1] (up to Nyquist rate). If scale is a vector, the output is a L x numel(scale) matrix with the individual wavelets as columns.
The following additional flags and key-value parameters are available:
'scale' | Wavelet scale (relative to basic scale) |
'waveletParams' | a vector containing the respective wavelet parameters [alpha, beta, gamma] for cauchy and morse wavelets [sigma] for morlet wavelets [order, fb] for splines |
'basefc',fc | Normalized center frequency of the mother wavelet (scale=1). The default is 0.1. |
'bwthr',bwthr | The height at which the bandwidth is computed. The default value is 10^(-3/10) (~0.5). |
'efsuppthr',thr | The threshold determining the effective support of the wavelet. The default value is 10^(-5). |
'scal',s | Scale the filter by the constant s. This can be useful to equalize channels in a filter bank. |
'delay',d | Set the delay of the filter. Can be either a scalar or a vector of the same length as scale. Default value is zero. |
The admissible range of scales can be adjusted to handle different scenarios:
'positive' | Enables the construction of wavelets at postive center frequencies ]0,1]. If basefc=0.1, this corresponds to scales larger than or equal to 0.1. This is the default. |
'negative' | Enables the construction of wavelets at negative center frequencies [-1,0[. If basefc=0.1, this corresponds to scales smaller than or equal to -0.1. |
'analytic' | Enables the construction of wavelets with center frequencies in ]0,2] for analysis of analytic signals. [! This feature is currently experimental and may not always work as intended. !] |
The format of the output is controlled by the following flags: 'full' (default),'econ','asfreqfilter':
'full' | The output is a L x numel(scale) matrix. |
'econ' | The output is a numel(scale) cell array with individual freq. domain wavelets truncated to the length of the effective support given by parameter 'efsuppthr'. Does not run stably for system lengths > 2000 |
[H,info]=freqwavelet(...) additionally returns a struct with the following fields:
.fc | Normalized center frequency. |
.foff | Index of the first sample above the effective support threshold (minus one). It can be directly used to convert the 'econ' output to 'full' by circshift(postpad(H,L),foff). |
.fsupp | Length of the effective support (with values above efsuppthr). |
.basefc | Center frequency of the implied mother wavelet. |
.scale | The scale used. |
.dilation | The actual dilation used in the formula. |
.bw | Relative bandwidth at relative height 'bwthr'. |
.tfr | Time-frequency ratio of a Gaussian with the same bandwidth as the wavelet. |
.aprecise | Exact natural subsampling factors (not rounded). |
.a_natural | Fractional natural subsampling factors in the format acceptable by filterbank and related. |
.cauchyAlpha | Alpha value of closest Cauchy wavelet [NOTE: Not implemented for non-Morse wavelets.] |
Additionally, the function accepts flags to normalize the output. Please see the help of setnorm. By default, no normaliazation is applied.
C is a normalization constant.
Cauchy wavelet
H = C xi^{frac{alpha-1}{2}} exp( -2pixi )
\begin{equation*} H = C \xi^{\frac{\alpha-1}{2}} exp( -2\pi\xi ) \end{equation*}
Morse wavelet
H = C xi^{frac{alpha-1}{2gamma}} exp( -2pixi^{gamma} )
\begin{equation*} H = C \xi^{\frac{\alpha-1}{2\gamma}} exp( -2\pi\xi^{\gamma} ) \end{equation*}
Morlet wavelet
H = C xi^{frac{alpha-1}{2gamma}} exp( -2pixi^{gamma} )
\begin{equation*} H = C \xi^{\frac{\alpha-1}{2\gamma}} exp( -2\pi\xi^{\gamma} ) \end{equation*}
Frequency bandlimited spline wavelet
H = C B (xi - m frac{xi}{4})
\begin{equation*} H = C B (\xi - m \frac{\xi}{4}) \end{equation*}
Analytic spline wavelet
H = C exp(-j omega x) A(-exp(j omega)) H(exp(-j omega)
\begin{equation*} H = C exp(-j \omega x) A(-exp(j \omega)) H(exp(-j \omega)) \end{equation*}
Complex spline wavelet
H = C exp(-j omega x + xi )
\begin{equation*} H = C exp(-j \omega x + \xi ) \end{equation*}
O. Rioul and P. Duhamel. Fast algorithms for discrete and continuous wavelet transforms. IEEE Transactions on Information Theory, 38(2):569--586, 1992.
M. Unser, A. Aldroubi, and S. Schiff. B-spline signal processing. i. theory. IEEE Trans. Signal Process., 42(12):3519 --3523, 1994.