SGPL1: A solver for large-scale sparse reconstruction

Version 1.8, May 2013

Supplement to ‘‘Probing the Pareto frontier for basis pursuit solutions’’


All figures and tables in this paper, as well as the data to generate them, are reproducible. In order to do so, download the Matlab scripts from the box on the right. Since generating the required data takes a lot of time we suggest downloading the additional data file. (The scripts automatically generate missing data files.)

External packages

All scripts require that the SPGL1 solver and the Sparco toolbox be installed. When re-running experiments the following solver codes may be needed:

Script details

For more detailed information on the scripts see the README file included in the software supplement.

Figure 2.1: Newton's method on Pareto curve

This script generates a plot that illustrates Newton root finding on the Pareto curve for Sparco problem 11. The optional exportflag argument can be set to output the plot in PDF format.

  >> figureParetoNewton(exportflag)

Figure 4.1: Illustration of complex BP

This script plots the solution for a complex basis pursuit problem when i) SPGL1 is used in its complex mode, and ii) when basis pursuit is applied to a problem where the real and imaginary parts are split and combined after obtaining the (real) solution.

  >> DemoComplex(exportflag)

Table 6.2: Sparco proble table (without description)

  >> sparcotable(exportflag)

Table 6.3: Basis pursuit denoise comparisons

  >> BPDNtable('mode',0);
  >> BPDNtable('mode',0,'export'); % Output .tex file

Table 6.4: Basis pursuit comparisons

  >> BPtable('mode',1);          % Display table
  >> BPtable('mode',1,'export'); % Output .tex file
  >> BPtable('mode',2);          % Display table
  >> BPtable('mode',2,'export'); % Output .tex file

Figure 6.1: QPLS comparison plots

  >> QPLSplot( 5);            % Plot only
  >> QPLSplot( 5, 'export');  % Output .pdf file
  >> QPLSplot(401);           % Plot only
  >> QPLSplot(401, 'export'); % Output .pdf file

Figure 6.2: Extrapolation of the Pareto curve

  >> ParetoExtrap( 5, exportflag, [0 0 0 0 0]);
  >> ParetoExtrap(401, exportflag, [0 0 1 0 0]);

Cleaning up of BP and BPDN tests can be done using the removestats.m script.