IDGT Inverse discrete Gabor transform Usage: f=idgt(c,g,a); f=idgt(c,g,a,Ls); f=idgt(c,g,a,Ls,lt); Input parameters: c : Array of coefficients. g : Window function. a : Length of time shift. Ls : Length of signal. lt : Lattice type (for non-separable lattices) Output parameters: f : Signal. IDGT(c,g,a) computes the Gabor expansion of the input coefficients c with respect to the window g and time shift a. The number of channels is deduced from the size of the coefficients c. IDGT(c,g,a,Ls) does as above but cuts or extends f to length Ls. [f,g]=IDGT(...) 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. For perfect reconstruction, the window used must be a dual window of the one used to generate the coefficients. The window g may be a vector of numerical values, a text string or a cell array. See the help of GABWIN for more details. If g is a row vector, then the output will also be a row vector. If c is 3-dimensional, then IDGT will return a matrix consisting of one column vector for each of the TF-planes in c. Assume that f=IDGT(c,g,a,L) for an array c of size M xN. Then the following holds for k=0,...,L-1: N-1 M-1 f(l+1) = sum sum c(m+1,n+1)*exp(2*pi*i*m*l/M)*g(l-a*n+1) n=0 m=0 Non-separable lattices: ----------------------- IDGT(c,g,a,'lt',lt) computes the Gabor expansion of the input coefficients c with respect to the window g, time shift a and lattice type lt. Please see the help of MATRIX2LATTICETYPE for a precise description of the parameter lt. Assume that f=dgt(c,g,a,L,lt) for an array c of size MxN. Then the following holds for k=0,...,L-1: N-1 M-1 f(l+1) = sum sum c(m+1,n+1)*exp(2*pi*i*m*l/M)*g(l-a*n+1) n=0 m=0 Additional parameters: ---------------------- IDGT takes the following flags at the end of the line of input arguments: 'freqinv' Compute an IDGT using a frequency-invariant phase. This is the default convention described above. 'timeinv' Compute an IDGT using a time-invariant phase. This convention is typically used in FIR-filter algorithms. Examples: --------- The following example demostrates the basic pricinples for getting perfect reconstruction (short version): f=greasy; % test signal a=32; % time shift M=64; % frequency shift gs={'blackman',128}; % synthesis window ga={'dual',gs}; % analysis window [c,Ls]=dgt(f,ga,a,M); % analysis % ... do interesting stuff to c at this point ... r=idgt(c,gs,a,Ls); % synthesis norm(f-r) % test The following example does the same as the previous one, with an explicit construction of the analysis and synthesis windows: f=greasy; % test signal a=32; % time shift M=64; % frequency shift Ls=length(f); % signal length % Length of transform to do L=dgtlength(Ls,a,M); % Analysis and synthesis window gs=firwin('blackman',128); ga=gabdual(gs,a,M,L); c=dgt(f,ga,a,M); % analysis % ... do interesting stuff to c at this point ... r=idgt(c,gs,a,Ls); % synthesis norm(f-r) % test
Url: http://ltfat.github.io/doc/gabor/idgt.html
See also: dgt, gabwin, dwilt, gabtight.
Package: ltfat