simulation_wtBPDN

PURPOSE ^

Comparison of various re-weighted schemes

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 Comparison of various re-weighted schemes

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

 and dynamically update the weights w_i

 Written by: Salman Asif, Georgia Tech
 Email: sasif@ece.gatech.edu
 Created: April 16, 2011

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % Comparison of various re-weighted schemes
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 % and dynamically update the weights w_i
0007 %
0008 % Written by: Salman Asif, Georgia Tech
0009 % Email: sasif@ece.gatech.edu
0010 % Created: April 16, 2011
0011 
0012 clear
0013 close all
0014 
0015 %% parfor setup
0016 % numCores = str2double(getenv('NUMBER_OF_PROCESSORS'));
0017 % mpSize = numCores-1;
0018 % if matlabpool('size') ~= mpSize
0019 %     if matlabpool('size')~=0
0020 %         matlabpool close;
0021 %     else
0022 %         matlabpool('open', mpSize);
0023 %     end
0024 % end
0025 
0026 %% Setup path
0027 mname = mfilename;
0028 mpath = mfilename('fullpath');
0029 mdir = mpath(1:end-length(mname));
0030 cd(mdir);
0031 
0032 addpath ../Pursuits_Homotopy/
0033 addpath ../utils/
0034 addpath ../utils/qr/
0035 addpath ../utils/utils_Wavelet
0036 addpath(genpath('C:\Users\asif\MATLAB\Sparsity_solvers'));
0037 
0038 % load RandomStates
0039 rseed = sum(100*clock);
0040 rseed = 0;
0041 % rand('state',rseed);
0042 % randn('state',rseed);
0043 RandStream.setDefaultStream(RandStream('mt19937ar','seed',rseed));
0044 
0045 %% Sim parameters
0046 disp(['--------------------',datestr(now),'-------------------------'])
0047 
0048 % reweighted setup
0049 rwt = 5; % number of iterative reweighted iterations
0050 rwt_adp = 2; % number of adaptive reweighted iterations
0051 
0052 % rank-1 update mode
0053 delx_mode = 'mil'; % mil or qr
0054 
0055 % simulation setup
0056 maxsim = 200;
0057 
0058 N_list = [256 512 1024 2048];
0059 M_ratio = [2:5];
0060 T_ratio = [3:5];
0061 sType_list = {'randn','sign'}; % 'blocks','pcwPoly', 'HeaviSine'
0062 mType_list = {'randn','orth'};
0063 SNR_list = 30; % [20:10:40 1e16];
0064 rwt_list = 2; % [1 2 3 4];
0065 lambda_list = 0; % [0, 1e-1, 1e-2, 1e-4]; % multiplication factor for tau = lambda *\|A'y\|_\infty
0066 
0067 EXP_stack = {};
0068 estack = 1;
0069 EXP_stack{1,1} = 'mType';
0070 EXP_stack{1,2} = 'sType';
0071 EXP_stack{1,3} = 'SNR';
0072 EXP_stack{1,4} = 'rwt_mode';
0073 EXP_stack{1,5} = 'lambda_mode';
0074 EXP_stack{1,6} = 'N';
0075 EXP_stack{1,7} = 'M';
0076 EXP_stack{1,8} = 'T';
0077 EXP_stack{1,9} = 'str0';
0078 EXP_stack{1,10} = 'str2';
0079 EXP_stack{1,11} = 'avg SIM_stack';
0080 EXP_stack{1,12} = 'SIM_stack';
0081 EXP_stack{1,13} = 'SIM_memory';
0082 
0083 for mT = 1:length(mType_list);
0084     for sT = 1:length(sType_list);
0085         for snr = 1:length(SNR_list);
0086             for rwt_mode = rwt_list
0087                 for lam = 1:length(lambda_list)
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);
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                                 %% Run simulation
0106                                 script_simulation_wtBPDN_ALL;
0107                                 
0108                                 %                         %% Plot results...
0109                                 %                         EXP = {'adp','rwt','yall1','sparsa','spgl1'};
0110                                 %                         exp_plot = [1 2 3 4 5];
0111                                 %                         figure(101);
0112                                 %                         for exp_no = 1:length(exp_plot)
0113                                 %                             exp = exp_plot(exp_no);
0114                                 %                             sim_err = [];
0115                                 %                             sim_itr = [];
0116                                 %                             for ii = 1:maxsim
0117                                 %                                 sim_err = [sim_err; [SIM_memory{ii}{exp,3}]];
0118                                 %                                 sim_itr = [sim_itr; [SIM_memory{ii}{exp,2}]];
0119                                 %                             end
0120                                 %                             eval(sprintf('err_%s = sim_err;',char(EXP{exp})));
0121                                 %                             eval(sprintf('iter_%s = sim_itr;',char(EXP{exp})));
0122                                 %                             subplot(2,length(exp_plot),exp_no); plot(sim_err); title(sprintf('rel. err for %s',char(EXP{exp})));
0123                                 %                             subplot(2,length(exp_plot),length(exp_plot)+exp_no); plot(sim_itr); title(sprintf('iter count for %s',char(EXP{exp})));
0124                                 %                         end
0125                                 
0126                                 
0127                                 estack = estack+1;
0128                                 
0129                                 EXP_stack{estack,1} = mType;
0130                                 EXP_stack{estack,2} = sType;
0131                                 EXP_stack{estack,3} = SNR;
0132                                 EXP_stack{estack,4} = rwt_mode;
0133                                 EXP_stack{estack,5} = lambda;
0134                                 EXP_stack{estack,6} = N;
0135                                 EXP_stack{estack,7} = M;
0136                                 EXP_stack{estack,8} = T;
0137                                 EXP_stack{estack,9} = str0;
0138                                 EXP_stack{estack,10} = str2;
0139                                 EXP_stack{estack,11} = mean(cell2mat(SIM_stack),1);
0140                                 EXP_stack{estack,12} = SIM_stack;
0141                                 EXP_stack{estack,13} = SIM_memory;
0142                                 
0143                                 % eval(sprintf('save Results_%s',mfilename));
0144                             end
0145                         end
0146                     end
0147                 end
0148             end
0149         end
0150     end
0151 end

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