A sparse signal recovery library written in PyCUDA.
Sparse recovery algorithms attempt to solve problems in which you have an undetermined system of linear equations, but there the solution is known to be sparse. This can be formalized as follows:
Let l0
minimization problem, NP-hard).
-
$A$ is the measurement matrix that models the transformation of a high-dimensional signal to an observed lower-dimensional signal,$b$ . -
$x$ is the original high-dimensional and sparse signal to recover.- This may be a high-dimensional signal where only a few frequency bands are activate, and it's usually represented by a vector where most entries are 0.
-
$x = [0,0,3,0,0,-2,0,0,0,1,0,0,0,0,0]$ is 15-dimensional, and only 3 frequencies are active.
The measurement matrix
These algorithms iteratively select the dictionary (measurement matrix) element that best correlates with the current residual, i.e., the difference between the observed vector
At ech iteration, select the column of
- Initialize
$r=b,S=[]$ (support) - Iterate until the correlated with the current residual, add it to the support of the solution, an dadjust the current solution to be the least squares solution consistent with the current support.
- Iterate until a stopping condition is met:
$i=\text{argmax}_j|<r,A_j>|$ $S=S\cup {i}$ $x_S=\text{argmin}_x|b-A_Sx|_2$ $r=b-A_Sx_S$