This is where navigation should be.

DWILT - Discrete Wilson transform

Usage

c=dwilt(f,g,M);
c=dwilt(f,g,M,L);
[c,Ls]=dwilt(...);

Input parameters

f Input data
g Window function.
M Number of bands.
L Length of transform to do.

Output parameters

c \(2M \times N\) array of coefficients.
Ls Length of input signal.

Description

dwilt(f,g,M) computes a discrete Wilson transform with M bands and window g.

The length of the transform will be the smallest possible that is larger than the signal. f will be zero-extended to the length of the transform. If f is a matrix, the transformation is applied to each column.

The window g may be a vector of numerical values, a text string or a cell array. See the help of wilwin for more details.

dwilt(f,g,M,L) computes the Wilson transform as above, but does a transform of length L. f will be cut or zero-extended to length L before the transform is done.

[c,Ls]=dwilt(f,g,M) or [c,Ls]=dwilt(f,g,M,L) additionally return the length of the input signal f. This is handy for reconstruction:

[c,Ls]=dwilt(f,g,M);
fr=idwilt(c,gd,M,Ls);

will reconstruct the signal f no matter what the length of f is, provided that gd is a dual Wilson window of g.

[c,Ls,g]=dwilt(...) additionally outputs the window used in the transform. This is useful if the window was generated from a description in a string or cell array.

A Wilson transform is also known as a maximally decimated, even-stacked cosine modulated filter bank.

Use the function wil2rect to visualize the coefficients or to work with the coefficients in the TF-plane.

Assume that the following code has been executed for a column vector f:

c=dwilt(f,g,M);  % Compute a Wilson transform of f.
N=size(c,2)*2;   % Number of translation coefficients.

The following holds for \(m=0,\ldots,M-1\) and \(n=0,\ldots,N/2-1\):

If \(m=0\):

\begin{equation*} c\left(1,n+1\right) = \sum_{l=0}^{L-1}f(l+1)g\left(l-2nM+1\right) \end{equation*}

If \(m\) is odd and less than \(M\)

\begin{align*} c\left(m+1,n+1\right) & = & \sqrt{2}\sum_{l=0}^{L-1}f(l+1)\sin(\pi\frac{m}{M}l)g(l-2nM+1)\\\\ c\left(m+M+1,n+1\right) & = & \sqrt{2}\sum_{l=0}^{L-1}f(l+1)\cos(\pi\frac{m}{M}l)g\left(l-\left(2n+1\right)M+1\right) \end{align*}

If \(m\) is even and less than \(M\)

\begin{align*} c\left(m+1,n+1\right) & = & \sqrt{2}\sum_{l=0}^{L-1}f(l+1)\cos(\pi\frac{m}{M}l)g(l-2nM+1)\\\\ c\left(m+M+1,n+1\right) & = & \sqrt{2}\sum_{l=0}^{L-1}f(l+1)\sin(\pi\frac{m}{M}l)g\left(l-\left(2n+1\right)M+1\right) \end{align*}

if \(m=M\) and \(M\) is even:

\begin{equation*} c\left(M+1,n+1\right) = \sum_{l=0}^{L-1}f(l+1)(-1)^{l}g(l-2nM+1) \end{equation*}

else if \(m=M\) and \(M\) is odd

\begin{equation*} c\left(M+1,n+1\right) = \sum_{k=0}^{L-1}f(l+1)(-1)^{l}g\left(l-\left(2n+1\right)M+1\right) \end{equation*}

References:

H. Bölcskei, H. G. Feichtinger, K. Gröchenig, and F. Hlawatsch. Discrete-time Wilson expansions. In Proc. IEEE-SP 1996 Int. Sympos. Time-Frequency Time-Scale Analysis, june 1996. [ http ]

I. Daubechies, S. Jaffard, and J. Journé. A simple Wilson orthonormal basis with exponential decay. SIAM J. Math. Anal., 22:554--573, 1991.

Y.-P. Lin and P. Vaidyanathan. Linear phase cosine modulated maximally decimated filter banks with perfectreconstruction. IEEE Trans. Signal Process., 43(11):2525--2539, 1995.