# Weighted L1-Minimization Code, Version 1.0 #
==============================================

Code for the pre-print [Weighted L1-Minimization for Sparse Recovery under Arbitrary Prior Information](http://arxiv.org/abs/1606.01295) 
by Deanna Needell, Rayan Saab, and Tina Woolf

BibTeX reference:
```
@article{NeedellWeighted16,
Author = {D. Needell, R. Saab, T. Woolf},
Title = {Weighted $\ell_1$-Minimization for Sparse Recovery under Arbitrary Prior Information},
note = {Submitted},
Year = {2016}}
```

# Requirements #
================

- CVX
    http://cvxr.com/cvx/

Michael Grant and Stephen Boyd. CVX: Matlab software for disciplined convex programming, version 2.0 beta. http://cvxr.com/cvx, September 2013.

Michael Grant and Stephen Boyd. Graph implementations for nonsmooth convex programs, Recent Advances in Learning and Control (a tribute to M. Vidyasagar), V. Blondel, S. Boyd, and H. Kimura, editors, pages 95-110, Lecture Notes in Control and Information Sciences, Springer, 2008. http://stanford.edu/~boyd/graph_dcp.html.

- SPGL1
    https://www.math.ucdavis.edu/~mpf/spgl1/

Van Den Berg, E., & Friedlander, M. P. (2007). SPGL1: A solver for large-scale
sparse reconstruction.

Van Den Berg, E., & Friedlander, M. P. (2008). Probing the Pareto frontier for
basis pursuit solutions. SIAM Journal on Scientific Computing, 31(2), 890-912.

- Spot - A Linear-Operator Toolbox
    http://www.cs.ubc.ca/labs/scl/spot/


# Experiments #
===============

### Visualize Theoretical Results 

See ./Theory/compareSufficientRIPBound.m (for Figure 1)

### Synthetic Experiments (CVX required)
    
See ./Synthetic/wrapper_rho_runWeightedL1_TwoSupportEstimates.m (for Figure 2, left)
    ./Synthetic/wrapper_alpha_runWeightedL1_TwoSupportEstimates.m (for Figure 2, right)
    ./Synthetic/runPriorDensity.m (for Figures 3, 4, and 5)

### Video Experiments (SPGL1 and Spot required)

See ./Video/video_wL1_recovery.m (for Figure 6)