pylops.optimization.sparsity.omp(Op, y, niter_outer=10, niter_inner=40, sigma=0.0001, normalizecols=False, show=False, itershow=[10, 10, 10], callback=None)[source]

Orthogonal Matching Pursuit (OMP).

Solve an optimization problem with \(L^0\) regularization function given the operator Op and data y. The operator can be real or complex, and should ideally be either square \(N=M\) or underdetermined \(N<M\).

Op : pylops.LinearOperator

Operator to invert

y : numpy.ndarray


niter_outer : int, optional

Number of iterations of outer loop

niter_inner : int, optional

Number of iterations of inner loop. By choosing niter_inner=0, the Matching Pursuit (MP) algorithm is implemented.

sigma : list

Maximum \(L_2\) norm of residual. When smaller stop iterations.

normalizecols : list, optional

Normalize columns (True) or not (False). Note that this can be expensive as it requires applying the forward operator \(n_{cols}\) times to unit vectors (i.e., containing 1 at position j and zero otherwise); use only when the columns of the operator are expected to have highly varying norms.

show : bool, optional

Display iterations log

itershow : list, optional

Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list.

callback : callable, optional

Function with signature (callback(x)) to call after each iteration where x is the current model vector

xinv : numpy.ndarray

Inverted model

niter_outer : int

Number of effective outer iterations

cost : numpy.ndarray, optional

History of cost function

See also

Iterative Shrinkage-Thresholding Algorithm (ISTA).
Fast Iterative Shrinkage-Thresholding Algorithm (FISTA).
Spectral Projected-Gradient for L1 norm (SPGL1).
Split Bregman for mixed L2-L1 norms.


See pylops.optimization.cls_sparsity.OMP

Examples using pylops.optimization.sparsity.omp