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