This is where navigation should be.

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

Description

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.