job_wtBPDN_ALL

PURPOSE ^

Comparison of various solvers for iterative reweighting and adaptive reweighting

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 Comparison of various solvers for iterative reweighting and adaptive reweighting

 Solves the following basis pursuit denoising (BPDN) problem
 min_x  \Sum \w_i |x_i| + 1/2*||y-Ax||_2^2

 while updating the weights w_i

 Written by: Salman Asif, Georgia Tech
 Email: sasif@gatech.edu
 Created: June 16, 2011
 
 Reference: 
 "Fast and accurate algorithms for re-weighted L1 norm minimization," by 
 M. Salman Asif and Justin Romberg

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % Comparison of various solvers for iterative reweighting and adaptive reweighting
0002 %
0003 % Solves the following basis pursuit denoising (BPDN) problem
0004 % min_x  \Sum \w_i |x_i| + 1/2*||y-Ax||_2^2
0005 %
0006 % while updating the weights w_i
0007 %
0008 % Written by: Salman Asif, Georgia Tech
0009 % Email: sasif@gatech.edu
0010 % Created: June 16, 2011
0011 %
0012 % Reference:
0013 % "Fast and accurate algorithms for re-weighted L1 norm minimization," by
0014 % M. Salman Asif and Justin Romberg
0015 
0016 % function job_wtBPDN_ALL(mT, sT, snr, rwt_mode, lam_mode)
0017 % mT = 1, sT = 1, snr = 2, rwt_mode = 5, lam_mode = 1;
0018 
0019 EXP_LIST = [1 1 2 5 1; 1 1 3 5 1; 1 1 4 5 1; 1 2 2 5 1; 1 2 3 5 1; 1 2 4 5 1];
0020 maxNumCompThreads(1);
0021 
0022 %% Setup path
0023 mname = mfilename;
0024 mpath = mfilename('fullpath');
0025 mdir = mpath(1:end-length(mname));
0026 cd(mdir);
0027 
0028 addpath ../Pursuits_Homotopy/
0029 addpath ../utils/
0030 addpath ../utils/utils_Wavelet/
0031 addpath ../solvers/
0032 addpath src/
0033 
0034 %% Simulation parameters
0035 % reweighted setup
0036 rwt = 5;        % number of reweighting iterations
0037 rwt_adp = 2;    % number of reweighting iterations after adaptive reweighting
0038 
0039 % rank-1 update mode
0040 delx_mode = 'mil'; % mil or qr
0041 
0042 % simulation setup
0043 maxsim = 100;
0044 
0045 mType_list = {'randn','orth','rdct'};
0046 sType_list = {'randn','sign','highD'}; % 'blocks','pcwPoly'
0047 SNR_list = [20:10:40 inf];
0048 
0049 lambda_list = [0, 1e-1, 1e-2, 1e-4];
0050 % multiplication factor for tau = lambda *\|A'y\|_\infty
0051 % 0 --> sigma*log(N)
0052 
0053 N_list = [256 512 1024];
0054 M_ratio = [2:5];
0055 T_ratio = [3:5];
0056 
0057 % for mT = 1:length(mType_list);
0058 %     for sT = 1:length(sType_list);
0059 %         for snr = 1:length(SNR_list);
0060 %             for rwt_mode = rwt_list
0061 %                 for lam_mode = 1:length(lambda_list)
0062 
0063 for pf = 1:length(EXP_LIST)
0064     
0065     mT = EXP_LIST(pf,1);
0066     sT = EXP_LIST(pf,2);
0067     snr = EXP_LIST(pf,3);
0068     rwt_mode = EXP_LIST(pf,4);
0069     lam_mode = EXP_LIST(pf,5);
0070     
0071     EXP_stack = {};
0072     estack = 1;
0073     EXP_stack{1,1} = 'mType';
0074     EXP_stack{1,2} = 'sType';
0075     EXP_stack{1,3} = 'SNR';
0076     EXP_stack{1,4} = 'rwt_mode';
0077     EXP_stack{1,5} = 'lambda_mode';
0078     EXP_stack{1,6} = 'N';
0079     EXP_stack{1,7} = 'M';
0080     EXP_stack{1,8} = 'T';
0081     EXP_stack{1,9} = 'str0';
0082     EXP_stack{1,10} = 'str2';
0083     EXP_stack{1,11} = 'avg SIM_stack';
0084     EXP_stack{1,12} = 'SIM_stack';
0085     EXP_stack{1,13} = 'SIM_memory';
0086     
0087     
0088     for nl = 1:length(N_list)
0089         for mr = 1:length(M_ratio)
0090             for tr = 1:length(T_ratio)
0091                 
0092                 N = N_list(nl);     % signal length
0093                 M = round(N/M_ratio(mr));   % no. of measurements
0094                 T = round(M/T_ratio(tr));   % sparsity level
0095                 
0096                 sType = char(sType_list{sT});
0097                 mType = char(mType_list{mT});
0098                 SNR = SNR_list(snr);
0099                 
0100                 lambda = lambda_list(lam_mode);
0101                 
0102                 str0 = sprintf('mType-%s, sType-%s, SNR = %d, (N,M,T) = %d, %d, %d, rwt_mode-%d, lambda%3.4g.', mType, sType, SNR, N, M, T, rwt_mode, lambda);
0103                 disp(str0);
0104                 
0105                 filename_save = sprintf('results_comparison_ALL/comparison_wtBPDN_mT-%s_sT-%s_SNR%d-reproduce-Trwt.mat',mType,sType,SNR);
0106                 
0107                 % % load RandomStates
0108                 % rseed = sum(100*clock);
0109                 % RandStream.setDefaultStream(RandStream('mt19937ar','seed',rseed));
0110                 %
0111                 % Experiments that reproduce results in the paper...
0112                 rseed = 2012;
0113                 rand('state',rseed);
0114                 randn('state',rseed);
0115                 
0116                 %% Run simulation
0117                 script_simulation_wtBPDN
0118                 
0119                 %% save results
0120                 estack = estack+1;
0121                 
0122                 EXP_stack{estack,1} = mType;
0123                 EXP_stack{estack,2} = sType;
0124                 EXP_stack{estack,3} = SNR;
0125                 EXP_stack{estack,4} = rwt_mode;
0126                 EXP_stack{estack,5} = lambda;
0127                 EXP_stack{estack,6} = N;
0128                 EXP_stack{estack,7} = M;
0129                 EXP_stack{estack,8} = T;
0130                 EXP_stack{estack,9} = str0;
0131                 EXP_stack{estack,10} = str2;
0132                 EXP_stack{estack,11} = mean(cell2mat(SIM_stack),1);
0133                 EXP_stack{estack,12} = SIM_stack;
0134                 EXP_stack{estack,13} = SIM_memory;
0135                 
0136                 eval(sprintf('save %s', filename_save));
0137             end
0138         end
0139     end
0140 end

Generated on Mon 10-Jun-2013 23:03:23 by m2html © 2005