Function: franamp
FRANAMP  Frame Analysis by Matching Pursuit
  Usage:  c = franamp(F,f)
          c = franamp(F,f,errdb,maxit)
          [c,frec,info] = franamp(...)

  Input parameters:
      F        : Frame definition
      f        : Input signal
      errdb    : Target normalized approximation error in dB
      maxit    : Maximum number of iterations.
  Output parameters:
      c        : Sparse representation
      frec     : Reconstructed signal
      info     : Struct with additional output paramerets

  FRANAMP(F,f) returns sparse representation of a signal in a
  dictionary given by vectors of frame F using the orthogonal matching
  pursuit algorithm.

  FRANAMP(F,f,errdb,maxit) tries to reach normalized approximation error 
  errdb dB in at most maxit iterations. 

  [c,frec,info] = FRANAMP(...) in addition returns the aproximated
  signal frec and a struct info with the following fields:

    .iter    Number of iterations done.

    .relres  Vector of length .iter with approximation error progress. 

  The normalized approximation error is computed as 
  err=norm(f-frec)/norm(f). The relationship between the output 
  coefficients and the approximation is frec = frsyn(F,c).

  The function takes the following optional parameters at the end of
  the line of input arguments:

    'print'    Display the progress.

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

  Algorithms
  ----------

  The implementation of OMP was taken from the sparsify_0.5 toolbox by
  Thomas Blumensath 
  http://www.personal.soton.ac.uk/tb1m08/sparsify/sparsify.html
  See help of greed_omp.
  In fact, the sparsify toolbox implements several flavors of OMP
  implementation. They can be chosen using the following flags:

    'auto'  Selects a suitable OMP algorithm according to the size of the problem.

    'qr'    QR based method

    'chol'  Cholesky based method

    'cg'    Conjugate Gradient Pursuit

  Additionally:

    'mp'    Classical (non-orthogonal) matching pursuit.

  Examples
  --------

  The following example show the development of the approx. error for the
  MP and OMP algorithms. :

      [f,fs] = greasy; F = frame('dgt','hann',256,1024);
      maxit = 4000;
      [c1,~,info1] = franamp(F,f,'omp','cg','maxit',maxit);
      [c2,~,info2] = franamp(F,f,'mp','maxit',maxit);
      plot(20*log10([info1.relres,info2.relres]));
      legend({'OMP','MP'});


  References:
    S. Mallat and Z. Zhang. Matching pursuits with time-frequency
    dictionaries. IEEE Trans. Signal Process., 41(12):3397--3415, 1993.
    
    Y. C. Pati, R. Rezaiifar, and P. S. Krishnaprasad. Orthogonal matching
    pursuit: Recursive function approximation with applications to wavelet
    decomposition. In Proc. 27th Asilomar Conference on Signals, Systems
    and Computers, pages 40--44 vol.1, Nov 1993.
    
    T. Blumensath and M. E. Davies. Gradient pursuits. IEEE Tran. Signal
    Processing, 56(6):2370--2382, 2008.
    

Url: http://ltfat.github.io/doc/frames/franamp.html

See also: frame, frsyn, framevectornorms.

Package: ltfat