WMDCT Windowed MDCT transform
Usage: c=wmdct(f,g,M);
c=wmdct(f,g,M,L);
[c,Ls]=wmdct(...);
Input parameters:
f : Input data
g : Window function.
M : Number of bands.
L : Length of transform to do.
Output parameters:
c : M xN array of coefficients.
Ls : Length of input signal.
WMDCT(f,g,M) computes a Windowed Modified Discrete Cosine 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.
g must be whole-point even.
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.
WMDCT(f,g,M,L) computes the MDCT 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]=WMDCT(f,g,M) or [c,Ls]=wmdct(f,g,M,L)` additionally returns the
length of the input signal f. This is handy for reconstruction:
[c,Ls]=wmdct(f,g,M);
fr=iwmdct(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]=WMDCT(...) 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.
The WMDCT is sometimes known as an odd-stacked cosine modulated filter
bank. The WMDCT defined by this routine is slightly different from the
most common definition of the WMDCT, in order to be able to use the
same window functions as the Wilson transform.
Assume that the following code has been executed for a column vector f
of length L:
c=wmdct(f,g,M); % Compute the WMDCT of f.
N=size(c,2); % Number of translation coefficients.
The following holds for m=0,...,M-1 and n=0,...,N-1:
If m+n is even:
L-1
c(m+1,n+1) = sum f(l+1)*cos(pi*(m+.5)*l/M+pi/4)*g(l-n*M+1)
l=0
If m+n is odd:
L-1
c(m+1,n+1) = sum f(l+1)*sin(pi*(m+.5)*l/M+pi/4)*g(l-n*M+1)
l=0
Examples:
---------
The following example shows the WMDCT coefficients (128 channels) of the
GREASY test signal:
fs=16000; % Sampling rate
c=wmdct(greasy,{'hann',0.02*fs},128);
plotwmdct(c,fs,90);
Compare the visual difference with the redundant expansion of the
same signal given in the example of the DGTREAL function.
References:
H. Boelcskei and F. Hlawatsch. Oversampled Wilson-type cosine modulated
filter banks with linear phase. In Asilomar Conf. on Signals, Systems,
and Computers, pages 998--1002, nov 1996.
H. S. Malvar. Signal Processing with Lapped Transforms. Artech House
Publishers, 1992.
J. P. Princen and A. B. Bradley. Analysis/synthesis filter bank design
based on time domain aliasing cancellation. IEEE Transactions on
Acoustics, Speech, and Signal Processing, ASSP-34(5):1153--1161, 1986.
J. P. Princen, A. W. Johnson, and A. B. Bradley. Subband/transform
coding using filter bank designs based on time domain aliasing
cancellation. Proceedings - ICASSP, IEEE International Conference on
Acoustics, Speech and Signal Processing, pages 2161--2164, 1987.
Url: http://ltfat.github.io/doc/gabor/wmdct.html
See also: iwmdct, wilwin, dwilt, wildual, wilorth.
Package: ltfat