UFWT Undecimated Fast Wavelet Transform
Usage: c = ufwt(f,w,J);
[c,info] = ufwt(...);
Input parameters:
f : Input data.
w : Wavelet Filterbank.
J : Number of filterbank iterations.
Output parameters:
c : Coefficients stored in L x(J+1) matrix.
info : Transform paramaters struct.
UFWT(f,w,J) computes redundant time (or shift) invariant
wavelet representation of the input signal f using wavelet filters
defined by w in the "a-trous" algorithm.
For all accepted formats of the parameter w see the FWTINIT function.
[c,info]=UFWT(f,w,J) additionally returns the info struct.
containing the transform parameters. It can be conviniently used for
the inverse transform IUFWT e.g. fhat = iUFWT(c,info). It is also
required by the PLOTWAVELETS function.
The coefficents c are so called undecimated Discrete Wavelet transform
of the input signal f, if w defines two-channel wavelet filterbank.
Other names for this version of the wavelet transform are: the
time-invariant wavelet transform, the stationary wavelet transform,
maximal overlap discrete wavelet transform or even the "continuous"
wavelet transform (as the time step is one sample). However, the
function accepts any number filters (referred to as M) in the basic
wavelet filterbank and the number of columns of c is then J(M-1)+1.
For one-dimensional input f of length L, the coefficients c are
stored as columns of a matrix. The columns are ordered with inceasing
central frequency of the respective subbands.
If the input f is L xW matrix, the transform is applied
to each column and the outputs are stacked along third dimension in the
L xJ(M-1)+1 xW data cube.
Filter scaling
--------------
When compared to FWT, UFWT subbands are gradually more and more
redundant with increasing level of the subband. If no scaling of the
filters is introduced, the energy of subbands tends to grow with increasing
level.
There are 3 flags defining filter scaling:
'sqrt'
Each filter is scaled by 1/sqrt(a), where a is the hop
factor associated with it. If the original filterbank is
orthonormal, the overall undecimated transform is a tight
frame.
This is the default.
'noscale'
Uses filters without scaling.
'scale'
Each filter is scaled by 1/a.
If 'noscale' is used, 'scale' has to be used in IUFWT (and vice
versa) in order to obtain a perfect reconstruction.
Boundary handling:
------------------
c=UFWT(f,w,J) uses periodic boundary extension. The extensions are
done internally at each level of the transform, rather than doing the
prior explicit padding.
Examples:
---------
A simple example of calling the UFWT function:
[f,fs] = greasy;
J = 8;
[c,info] = ufwt(f,'db8',J);
plotwavelets(c,info,fs,'dynrange',90);
References:
M. Holschneider, R. Kronland-Martinet, J. Morlet, and P. Tchamitchian.
A real-time algorithm for signal analysis with the help of the wavelet
transform. In Wavelets. Time-Frequency Methods and Phase Space,
volume 1, page 286, 1989.
Url: http://ltfat.github.io/doc/wavelets/ufwt.html
See also: iufwt, plotwavelets.
Package: ltfat