Function: isgramreal
ISGRAMREAL  Spectrogram inversion (real signal)
  Usage:  f=isgramreal(s,g,a,M);
          f=isgramreal(s,g,a,M,Ls);
          [f,relres,iter]=isgramreal(...);

  Input parameters:
        c       : Array of coefficients.
        g       : Window function.
        a       : Length of time shift.
        M       : Number of channels.
        Ls      : length of signal.
  Output parameters:
        f       : Signal.
        relres  : Vector of residuals.
        iter    : Number of iterations done.

  ISGRAMREAL(s,g,a,M) attempts to invert a spectrogram computed by :

    s = abs(dgtreal(f,g,a,M)).^2;

  by an iterative method.

  ISGRAMREAL(s,g,a,M,Ls) does as above but cuts or extends f to length Ls.

  If the phase of the spectrogram is known, it is much better to use
  DGTREAL

  f,relres,iter]=ISGRAMREAL(...) additionally returns the residuals in a
  vector relres and the number of iteration steps done.

  Generally, if the spectrogram has not been modified, the iterative
  algorithm will converge slowly to the correct result. If the
  spectrogram has been modified, the algorithm is not guaranteed to
  converge at all.  

  ISGRAMREAL takes the following parameters at the end of the line of
  input arguments:

    'lt',lt      Specify the lattice type. See the help on
                 MATRIX2LATTICETYPE. Only the rectangular or quinqux
                 lattices can be specified.

    'zero'       Choose a starting phase of zero. This is the default

    'rand'       Choose a random starting phase.

    'int'        Construct a starting phase by integration. Only works
                 for Gaussian windows.

    'griflim'    Use the Griffin-Lim iterative method, this is the
                 default.

    'bfgs'       Use the limited-memory Broyden Fletcher Goldfarb
                 Shanno (BFGS) method.  

    'tol',t      Stop if relative residual error is less than the specified tolerance.  

    'maxit',n    Do at most n iterations.

    'print'      Display the progress.

    'quiet'      Don't print anything, this is the default.

    'printstep',p
                 If 'print' is specified, then print every p'th
                 iteration. Default value is p=10.

  The BFGS method makes use of the minFunc software. To use the BFGS method, 
  please install the minFunc software from:
  http://www.cs.ubc.ca/~schmidtm/Software/minFunc.html.


  References:
    R. Decorsiere and P. L. Soendergaard. Modulation filtering using an
    optimization approach to spectrogram reconstruction. In Proceedings of
    the Forum Acousticum, 2011.
    
    D. Griffin and J. Lim. Signal estimation from modified short-time
    Fourier transform. IEEE Trans. Acoust. Speech Signal Process.,
    32(2):236--243, 1984.
    
    D. Liu and J. Nocedal. On the limited memory BFGS method for large
    scale optimization. Mathematical programming, 45(1):503--528, 1989.
    

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

See also: dgtreal, idgtreal.

Package: ltfat