Function: dgt
DGT  Discrete Gabor transform
  Usage:  c=dgt(f,g,a,M);
          c=dgt(f,g,a,M,L);
          c=dgt(f,g,a,M,'lt',lt);
          [c,Ls]=dgt(...);

  Input parameters:
        f     : Input data.
        g     : Window function.
        a     : Length of time shift.
        M     : Number of channels.
        L     : Length of transform to do.
        lt    : Lattice type (for non-separable lattices).
  Output parameters:
        c     : M xN array of coefficients.
        Ls    : Length of input signal.

  DGT(f,g,a,M) computes the Gabor coefficients (also known as a windowed
  Fourier transform) of the input signal f with respect to the window
  g and parameters a and M. The output is a vector/matrix in a
  rectangular layout.

  The length of the transform will be the smallest multiple of a and M*
  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 length of the transform done can be obtained by
  L=size(c,2)*a;

  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.

  DGT(f,g,a,M,L) computes the Gabor coefficients 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]=DGT(f,g,a,M) or [c,Ls]=DGT(f,g,a,M,L) additionally returns the
  length of the input signal f. This is handy for reconstruction:

              [c,Ls]=dgt(f,g,a,M);
              fr=idgt(c,gd,a,Ls);

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

  [c,Ls,g]=DGT(...) 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 Discrete Gabor Transform is defined as follows: Consider a window g*
  and a one-dimensional signal f of length L and define N=L/a.
  The output from c=DGT(f,g,a,M) is then given by:

                  L-1 
     c(m+1,n+1) = sum f(l+1)*conj(g(l-a*n+1))*exp(-2*pi*i*m*l/M), 
                  l=0  

  where m=0,...,M-1 and n=0,...,N-1 and l-an is computed
  modulo L.

  Non-separable lattices:
  -----------------------

  DGT(f,g,a,M,'lt',lt) computes the DGT for a non-separable lattice
  given by the time-shift a, number of channels M and lattice type
  lt. Please see the help of MATRIX2LATTICETYPE for a precise
  description of the parameter lt.

  The non-separable discrete Gabor transform is defined as follows:
  Consider a window g and a one-dimensional signal f of length L and
  define N=L/a.  The output from c=DGT(f,g,a,M,L,lt) is then given
  by:

                  L-1 
     c(m+1,n+1) = sum f(l+1)*conj(g(l-a*n+1))*exp(-2*pi*i*(m+w(n))*l/M), 
                  l=0  

  where m=0,...,M-1 and n=0,...,N-1 and l-an are computed
  modulo L.  The additional offset w is given by w(n)=mod(n*lt_1,lt_2)/lt_2
  in the formula above.

  Additional parameters:
  ----------------------

  DGT takes the following flags at the end of the line of input
  arguments:

    'freqinv'  Compute a DGT using a frequency-invariant phase. This
               is the default convention described above.

    'timeinv'  Compute a DGT using a time-invariant phase. This
               convention is typically used in FIR-filter algorithms.

  Examples:
  ---------

  In the following example we create a Hermite function, which is a
  complex-valued function with a circular spectrogram, and visualize
  the coefficients using both imagesc and PLOTDGT:

    a=10;
    M=40;
    L=a*M;
    h=pherm(L,4); % 4th order hermite function.
    c=dgt(h,'gauss',a,M);

    % Simple plot: The squared modulus of the coefficients on
    % a linear scale
    figure(1);
    imagesc(abs(c).^2);

    % Better plot: zero-frequency is displayed in the middle, 
    % and the coefficients are show on a logarithmic scale.
    figure(2);
    plotdgt(c,a,'dynrange',50);



  References:
    K. Groechenig. Foundations of Time-Frequency Analysis. Birkhauser, 2001.
    
    H. G. Feichtinger and T. Strohmer, editors. Gabor Analysis and
    Algorithms. Birkhauser, Boston, 1998.
    

Url: http://ltfat.github.io/doc/gabor/dgt.html

See also: idgt, gabwin, dwilt, gabdual, phaselock, demo_dgt.

Package: ltfat