README file for Spectral Compressive Sensing Toolbox V3.1
http://dsp.rice.edu/scs
June 8, 2012

By Marco F. Duarte
Department of Electrical and Computer Engineering
University of Massachusetts - Amherst
mduarte@ecs.umass.edu

Note: The script rmAMSCS.m requires the l1-Magic toolbox, available at http://l1-magic.org
The script inhibition_ip_reg.m requires the cvx toolbox, available at http://www.stanford.edu/~boyd/cvx/

The toolbox contains the following files:

README.txt - This file.

CS and SCS Recovery algorithms
==============================

iht_fft.m - Iterative hard thresholding via Fast Fourier Transform
iht_periodogram.m - Iterative hard thresholding via DFT frame (periodogram)
siht_periodogram.m - Spectral iterative hard thresholding via periodogram (DFT frame)/heuristic
siht_periodogram_ip.m - Spectral iterative hard thresholding via periodogram (DFT frame)/integer program
siht_rootmusic.m - Spectral iterative hard thresholding via Root MUSIC (line spectral estimation)
siht_thomson.m - Spectral iterative hard thresholding via Thomson's multitaper method (line spectral estimation)

Experiment scripts
==================

rmAMSCS.m - Test performance of CS and SCS on AM modulated signal measured with random demodulator.
test_scs_average.m - Tests performance of CS and SCS on frequency-sparse signals with arbitrary frequencies (Average case)
test_scs_best.m - Tests performance of CS and SCS on frequency-sparse signals without spectral leakage (Best case)
test_scs_gridres.m - Tests performance of SCS via Periodogram for a given frequency oversampling factor
test_scs_noise.m - Tests performance of SCS for varying measurement noise variances
test_scs_resolution.m - Tests performance of CS and SCS on frequency-sparse signals with components at neighboring frequencies.
test_scs_worst.m - Tests performance of CS and SCS on frequency-sparse signals with full spectral leakage (Worst case)

Figure-generating scripts for paper "Spectral Compressive Sensing"
==================================================================

paperfigures.m - Generates all figures in the paper. Data is generated by scripts listed below.
test_scs_amsignal_paper.m - Experiment for Figure 7
test_scs_average_paper.m - Experiment for Figure 3 (Average case)
test_scs_average_singletest.m - Experiment for Figure 1
test_scs_best_paper.m - Experiment for Figure 3 (Best case)
test_scs_gridres_paper.m - Experiment for figure 5
test_scs_noise_paper.m - Experiment for Figure 4
test_scs_resolution_paper.m - Experiment for Figure 6
test_scs_sparseapprox.m - Experiment for Figure 2
test_scs_worst_paper.m - Experiment for Figure 3 (Worst case)

Utilities
=========

adjustfreqs.m - Adjusts frequencies estimated from M signal samples to N signal samples
axisfortex.m - Labels the axis and title of a figure with a large font
buildPhi_rdm.m - Builds CS measurement matrix for random demodulator (Written by Jason Laska)
buildSparseBasis.m - Builds sparsity bases (Written by Jason Laska)
freqsignalest.m - Approximates a signal using frequency-sparse model
inhibition_reg_ip.m - Formulates integer program to inhibit coherent frequencies (regular frequency sampling)
modelapprox.m - Approximates a signal using coherence-inhibiting heuristic
modelapprox_ip.m - Approximates a signal using coherence-avoiding frequency-sparse model (integer program)
musicapprox.m - Approximates a signal using a K-component frequency-sparse model via Root MUSIC
rootmusic.m - Root MUSIC implementation (Written by Stephen Kogon)
thomsonapprox.m - Approximates a signal using a K-component frequency-sparse model via Thomson's multitaper method

Data inputs
==========

gp2_dsbfc_clean.mat - AM modulated signal data 
paper_average_singletest_data.mat - Input signal data for Figure 1
paper_sparseapprox_data.mat - Input signal data for Figure 2

Data outputs
============

paper_amsignal_results.mat - Experimental results for Figure 7
paper_average_results.mat - Experimental results for Figure 3 (Average case)
paper_average_singletest_results.mat - Experimental results for Figure 1
paper_best_results.mat - Experimental results for Figure 3 (Best case)
paper_gridres_results.mat - Experimental results for Figure 5
paper_noise_results.mat - Experimental results for Figure 4
paper_resolution_results.mat - Experimental results for Figure 6
paper_sparseapprox_results.mat - Experimental results for Figure 2
paper_worst_results.mat - Experimental results for Figure 3 (Worst case)

Notes
=====

Several of the scripts mentioned above test a structured sparse approximation algorithm based on integer programming, which is computationally intensive. Alternative scripts are available with the suffix "_light" at the end of the filename.