forked from mpf/spgl1
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
96 lines (65 loc) · 2.84 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
SPGL1: Spectral Projected Gradient for L1 minimization
------------------------------------------------------
1. Introduction
===============
Thank you for downloading the SPGL1 solver! SPGL1 is a Matlab solver
for large-scale one-norm regularized least squares. It is designed to
solve any of the following three problems:
1. Basis pursuit denoise (BPDN):
minimize ||x||_1 subject to ||Ax - b||_2 <= sigma,
2. Basis pursuit (BP):
minimize ||x||_1 subject to Ax = b
3. Lasso:
minimize ||Ax - b||_2 subject to ||x||_1 <= tau,
The matrix A can be defined explicily, or as an operator (i.e., a
function) that return both both Ax and A'y. SPGL1 can solve these
three problems in both the real and complex domains.
Home page: https://www.math.ucdavis.edu/~mpf/spgl1/
2. Quick start
==============
Start Matlab and make sure the working directory is set to the
directory containing the SPGL1 source files. When this is done, run
>> spgdemo
at the Matlab prompt. This script illustrates various uses of SPGL1:
- Solve (BPDN) for some sigma > 0
- Solve (Lasso)
- Solve (BP)
- Solve a (BP) problem in complex variables
- Sample the entire Pareto frontier (i.e., ||Ax-b||_2 vs ||x||_1)
for a small test problem.
3. Installation
===============
3.1 MEX interface
------------------
A vital component of SPGL1 is a routine (oneProjector.m) for
projecting vectors onto the one-norm ball. The default distribution
includes a pure Matlab version of oneProjector which should work on
all platforms, and also a C-version of this routine that is more
efficient on large problems. Precompiled MEX interfaces to the C
implementation of oneProjector are included for Windows
(oneProjector.dll), Linux/x86 (oneProjector.mexglx) and MacOSX/Intel
(oneProjector.mexmaci). If you need to compile the MEX interface on
your own machine, run the following command at the Matlab prompt:
>> spgsetup
or, equivalently, change to the "private" directory and issue the
command
>> mex oneProjector.c oneProjector_core.c -output oneProjector -DNDEBUG
If the MEX interface cannot be found, SPGL1 falls back to the slower
Matlab implementation of oneProjector.
3.2 Path
---------
In order to use SPGL1 from any directory other than the one
containing the main spgl1 routine, add the SPGL1 package to your
default path:
>> addpath <dir-name>
where <dir-name> is the location of spgl1.m. You can also add this
command to your startup.m file.
4. References
=============
The algorithm implemented by SPGL1 is described in the paper
- E. van den Berg and M. P. Friedlander, "Probing the Pareto frontier
for basis pursuit solutions", SIAM J. on Scientific Computing,
31(2):890-912, November 2008
- Sparse optimization with least-squares constraints E. van den Berg
and M. P. Friedlander, Tech. Rep. TR-2010-02, Dept of Computer
Science, Univ of British Columbia, January 2010