%Code written by Namrata Vaswani %If you use this code, please cite: %N. Vaswani, Kalman Filtered Compressed Sensing, ICIP 2008 %N. Vaswani, Analyzing Least Squares and Kalman Filtered Compressed Sensing, ICASSP 2009 Main file: runsims_final.m This file contains the following parts. 0. set paramaters Specify sigma0 (sigma_obs in the paper), sigsys (sigma_sys), siginit. Alternatively directly specify R, Q, Pi0. Set total_iters (number of realizations to average over) Set tot (total time, T) 1. gendata_full a. simulates x(:,t) and y(:,t) = Ax(:,t) + w_t b. A = random Gaussian matrix (replace this by the desired matrix for your problem) c. x(:,t) follows a Gaussian random walk model, and support increases slowly (see code or ICASSP'09 for details) d. to run code on real data, comment out gendata_full and - save measurements into y(:,t), for all t. y is n x tot. - x(:,t) is the coefficients in the sparsity basis - A = (measurement matrix)*(sparsity basis) e.g if running dynamic MRI reconstruction with wavelets as sparsity basis A = (H*F)*W' where H_{n x m} =random row sampling matrix, F_{m x m} = DFT matrix, W = 2D-DWT matrix. (compute W by applying DWT2 to each column of identity matrix). - Specify sigma0 (sigma_obs in the paper), sigsys (sigma_sys), siginit. Alternatively directly specify R, Q, Pi0. See 0. above. - set total_iters = 1 2. if run_kfcs==1, a. calls 6 functions to run the following 6 algorithms and the genie-KF LS-CSresidual-LS (lscs), KF-CSresidual-LS (kfcsls) and KF-CSresidual-KF (kfcs), each with and without deletion step and the genie KF. b. computes MSE's of each of them. saves data into a file. c. CSresidual uses Dantzig Selector to solve the noisy-CS problem: can replace this by BPDN for more efficient methods d. Also should replace linprog by code from CVX 3. if run_cs==1, a. runs CS-noiseless (regularcs_no_noise), CS Dantzig-Selector (regularcs) b. computes MSE's. saves data into a file. 4. if sim==0 Code for plotting, either set sim=0 or just copy-paste code to plot MSEs etc.