Orthogonal Matching Pursuit (OMP)

Matching pursuit (MP) and its improvement orthogonal matching pursuit (OMP) are both popular algorithms in compressive sensing (CS). Compared to MP, OMP can offer better performance, e.g. in respects of higher precision and faster convergency. This post aims to summarize the detailed procedure of OMP.

Given a NP-hard problem

\begin{align*} \mathcal{L}:\quad &\arg\min_{\mathbf{x}}\|\mathbf{x}\|_0 \\ \mathrm{subject~to}\quad & \mathbf{Ax} = \mathbf{b} \end{align*}

where

OMP is an iterative algorithm, in which \(\mathrm{supp}(\mathbf{x})\) is determined one by one and in each iteration the problem is optimally solved based on the current info. The detailed procedure of the algorithm can be listed in Table 1.

Table 1: Algorithm \(\mathrm{OMP}(\mathbf{A}, \mathbf{b})\)
Input: \(\mathbf{A}\), \(\mathbf{b}\).
Result: \(\mathbf{x}_k\)
Initialization: \(\mathbf{r}_0 = \mathbf{b}\), \(\mathcal{S}_0 = \emptyset\).
for \(k=1,2,\ldots\) do
step-1 \(\lambda_k = \arg\max\limits_{i\notin\mathcal{S}_{k-1}}\vert[\mathbf{A}]_i^T \mathbf{r}_{k-1}\vert\)
step-2 \(\mathcal{S}_k = \mathcal{S}_{k-1} \bigcup \{\lambda_k\}\)
step-3 \([\mathbf{x}_k]_{\mathcal{S}_k} = \arg\min\limits_{\mathbf{x}}\vert\vert[\mathbf{A}]_{\mathcal{S}_k}\mathbf{x} - \mathbf{b}\vert\vert_2\)
  \([\mathbf{x}_k]_{\overline{\mathcal{S}_k}}=\mathbf{0}_{n-\vert\mathcal{S}_k\vert}\)
step-4 \(\hat{\mathbf{b}}_k = [\mathbf{A}]_{\mathcal{S}_k}[\mathbf{x}_k]_{\mathcal{S}_k} = \mathbf{A}\mathbf{x}_k\)
step-5 \(\mathbf{r}_k = \mathbf{b} - \hat{\mathbf{b}}_k\)
end