SPGL1: A solver for sparse least squares
version 2.1 released June 2020
This latest release of SPGL1 implements a dual rootfinding mode that allows for increased accuracy for basis pusuit denoising problems. See Theory.
SPGL1 is an opensource Matlab solver for sparse leastsquares. It is designed to solve any one of these three problem formulations:
Lasso problem
Basis pursuit denoise
Basis pursuit
Features

Linear operator A. SPGL1 relies on matrixvector operations
A*x
andA'*y
, and accepts both explicit matrices (dense or sparse) and functions that evaluate these products. 
Sparsity regularizer. Any sparsityinducing norm \Vert\cdot\Vert_p can be used if the user provides functions evaluating the primal norm, the corresponding dual norm, and a procedure for projecting onto a levelset of the primal norm. The default is the 1norm. Several other norms included in SPGL1 are the group (1,2)norm and the special multiplemeasurement vector (MMV) case.

Real and complex domains. SPGL1 is suitable for problems that live in either the real or complex domains. In the complex domain, the correct corresponding 1norm (sum of magnitudes) is used.
Feedback
We are glad to hear from you if you find SPGL1 useful, or if you have any suggestions, contributions, or bug reports. Please send these to the SPGL1 authors
 Ewout van den Berg (Email
<vandenberg.ewout@gmail.com>
)  Michael P. Friedlander (Email:
<mpf@cs.ubc.ca>
)
Credits
This research is supported in part by an NSERC Discovery Grant and by a grant for the Office of Naval Research (N000141712009).