nikcleju@54
|
1 % File: study_analysis_rec_algos
|
nikcleju@54
|
2 % Run global experiment to compare algorithms used for analysis-based reconstruction
|
nikcleju@54
|
3 % and plot phast transition graphs
|
nikcleju@54
|
4
|
nikcleju@54
|
5 clear all
|
nikcleju@54
|
6 close all
|
nikcleju@54
|
7
|
nikcleju@54
|
8 % =================================
|
nikcleju@54
|
9 % Set up experiment parameters
|
nikcleju@54
|
10 %==================================
|
nikcleju@54
|
11 % Which form factor, delta and rho we want
|
nikcleju@54
|
12 sigmas = 1.2;
|
nikcleju@54
|
13 deltas = 0.05:0.05:0.95;
|
nikcleju@54
|
14 rhos = 0.05:0.05:0.95;
|
nikcleju@54
|
15 % deltas = [0.95];
|
nikcleju@54
|
16 % rhos = [0.1];
|
nikcleju@54
|
17 %deltas = 0.3:0.3:0.9;
|
nikcleju@54
|
18 %rhos = 0.3:0.3:0.9;
|
nikcleju@54
|
19
|
nikcleju@54
|
20 % Number of vectors to generate each time
|
nikcleju@54
|
21 numvects = 100;
|
nikcleju@54
|
22
|
nikcleju@54
|
23 % Add noise
|
nikcleju@54
|
24 % This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@54
|
25 SNRdb = 20; % virtually no noise
|
nikcleju@54
|
26
|
nikcleju@54
|
27 % Show progressbar ? (not recommended when running on parallel threads)
|
nikcleju@54
|
28 do_progressbar = 0;
|
nikcleju@54
|
29
|
nikcleju@54
|
30 % Value of lambda
|
nikcleju@54
|
31 lambda = 1e-2;
|
nikcleju@54
|
32
|
nikcleju@54
|
33 % What algos to run
|
nikcleju@54
|
34 do_abs_ompk = 1;
|
nikcleju@54
|
35 do_abs_ompeps = 1;
|
nikcleju@54
|
36 do_abs_tst = 1;
|
nikcleju@54
|
37 do_abs_bp = 1;
|
nikcleju@54
|
38 do_gap = 1;
|
nikcleju@54
|
39 do_nesta = 0;
|
nikcleju@54
|
40
|
nikcleju@54
|
41 % =================================
|
nikcleju@54
|
42 % Processing the parameters
|
nikcleju@54
|
43 %==================================
|
nikcleju@54
|
44 % Set up parameter structure
|
nikcleju@54
|
45 count = 0;
|
nikcleju@54
|
46 for isigma = 1:sigmas
|
nikcleju@54
|
47 for idelta = 1:numel(deltas)
|
nikcleju@54
|
48 for irho = 1:numel(rhos)
|
nikcleju@54
|
49 sigma = sigmas(isigma);
|
nikcleju@54
|
50 delta = deltas(idelta);
|
nikcleju@54
|
51 rho = rhos(irho);
|
nikcleju@54
|
52
|
nikcleju@54
|
53 d = 200;
|
nikcleju@54
|
54 p = round(sigma*d);
|
nikcleju@54
|
55 m = round(delta*d);
|
nikcleju@54
|
56 l = round(d - rho*m);
|
nikcleju@54
|
57
|
nikcleju@54
|
58 params(count+1).d = d;
|
nikcleju@54
|
59 params(count+1).p = p;
|
nikcleju@54
|
60 params(count+1).m = m;
|
nikcleju@54
|
61 params(count+1).l = l;
|
nikcleju@54
|
62
|
nikcleju@54
|
63 count = count + 1;
|
nikcleju@54
|
64 end
|
nikcleju@54
|
65 end
|
nikcleju@54
|
66 end
|
nikcleju@54
|
67
|
nikcleju@54
|
68 % Compute noiselevel from db
|
nikcleju@54
|
69 noiselevel = 1 / (10^(SNRdb/10));
|
nikcleju@54
|
70
|
nikcleju@54
|
71 %load study_analysis_init
|
nikcleju@54
|
72
|
nikcleju@54
|
73 % Generate an analysis operator Omega
|
nikcleju@54
|
74 Omega = Generate_Analysis_Operator(d, p);
|
nikcleju@54
|
75
|
nikcleju@54
|
76 % Progressbar
|
nikcleju@54
|
77 if do_progressbar
|
nikcleju@54
|
78 progressbar('Total', 'Current parameters');
|
nikcleju@54
|
79 end
|
nikcleju@54
|
80
|
nikcleju@54
|
81 % Init times
|
nikcleju@54
|
82 elapsed_abs_ompk = 0;
|
nikcleju@54
|
83 elapsed_abs_ompeps = 0;
|
nikcleju@54
|
84 elapsed_abs_tst = 0;
|
nikcleju@54
|
85 elapsed_abs_bp = 0;
|
nikcleju@54
|
86 elapsed_gap = 0;
|
nikcleju@54
|
87 elapsed_nesta = 0;
|
nikcleju@54
|
88
|
nikcleju@54
|
89 % Init results structure
|
nikcleju@54
|
90 results = [];
|
nikcleju@54
|
91
|
nikcleju@54
|
92 % Prepare progressbar reduction variables
|
nikcleju@54
|
93 % if do_progressbar
|
nikcleju@54
|
94 % incr2 = 1/numvects;
|
nikcleju@54
|
95 % incr1 = 1/numvects/count;
|
nikcleju@54
|
96 % frac2 = 0;
|
nikcleju@54
|
97 % frac1 = 0;
|
nikcleju@54
|
98 % end
|
nikcleju@54
|
99
|
nikcleju@54
|
100 % ========
|
nikcleju@54
|
101 % Run
|
nikcleju@54
|
102 % ========
|
nikcleju@54
|
103 parfor iparam = 1:numel(params)
|
nikcleju@54
|
104
|
nikcleju@54
|
105 % Read current parameters
|
nikcleju@54
|
106 d = params(iparam).d;
|
nikcleju@54
|
107 p = params(iparam).p;
|
nikcleju@54
|
108 m = params(iparam).m;
|
nikcleju@54
|
109 l = params(iparam).l;
|
nikcleju@54
|
110
|
nikcleju@54
|
111 % Init stuff
|
nikcleju@54
|
112 xrec_abs_ompk = zeros(d, numvects);
|
nikcleju@54
|
113 xrec_abs_ompeps = zeros(d, numvects);
|
nikcleju@54
|
114 xrec_abs_tst = zeros(d, numvects);
|
nikcleju@54
|
115 xrec_abs_bp = zeros(d, numvects);
|
nikcleju@54
|
116 xrec_gap = zeros(d, numvects);
|
nikcleju@54
|
117 xrec_nesta = zeros(d, numvects);
|
nikcleju@54
|
118 %
|
nikcleju@54
|
119 err_abs_ompk = zeros(numvects,1);
|
nikcleju@54
|
120 relerr_abs_ompk = zeros(numvects,1);
|
nikcleju@54
|
121 err_abs_ompeps = zeros(numvects,1);
|
nikcleju@54
|
122 relerr_abs_ompeps = zeros(numvects,1);
|
nikcleju@54
|
123 err_abs_tst = zeros(numvects,1);
|
nikcleju@54
|
124 relerr_abs_tst = zeros(numvects,1);
|
nikcleju@54
|
125 err_abs_bp = zeros(numvects,1);
|
nikcleju@54
|
126 relerr_abs_bp = zeros(numvects,1);
|
nikcleju@54
|
127 err_gap = zeros(numvects,1);
|
nikcleju@54
|
128 relerr_gap = zeros(numvects,1);
|
nikcleju@54
|
129 err_nesta = zeros(numvects,1);
|
nikcleju@54
|
130 relerr_nesta = zeros(numvects,1);
|
nikcleju@54
|
131
|
nikcleju@54
|
132 % Generate data based on parameters
|
nikcleju@54
|
133 [x0,y,M,Lambda] = Generate_Data_Known_Omega(Omega, d,p,m,l,noiselevel, numvects,'l0');
|
nikcleju@54
|
134
|
nikcleju@54
|
135 % For every generated signal do
|
nikcleju@54
|
136 for iy = 1:size(y,2)
|
nikcleju@54
|
137
|
nikcleju@54
|
138 % Compute epsilon
|
nikcleju@54
|
139 epsilon = noiselevel * norm(y(:,iy));
|
nikcleju@54
|
140
|
nikcleju@54
|
141 %--------------------------------
|
nikcleju@54
|
142 % Reconstruct (and measure delay)
|
nikcleju@54
|
143 % Compute reconstruction error
|
nikcleju@54
|
144 %--------------------------------
|
nikcleju@54
|
145 % ABS-OMPk
|
nikcleju@54
|
146 if (do_abs_ompk)
|
nikcleju@54
|
147 timer_abs_ompk = tic;
|
nikcleju@54
|
148 xrec_abs_ompk(:,iy) = ABS_OMPk_approx(y(:,iy), Omega, M, p-l, lambda);
|
nikcleju@54
|
149 elapsed_abs_ompk = elapsed_abs_ompk + toc(timer_abs_ompk);
|
nikcleju@54
|
150 %
|
nikcleju@54
|
151 err_abs_ompk(iy) = norm(x0(:,iy) - xrec_abs_ompk(:,iy));
|
nikcleju@54
|
152 relerr_abs_ompk(iy) = err_abs_ompk(iy) / norm(x0(:,iy));
|
nikcleju@54
|
153 end
|
nikcleju@54
|
154 % ABS-OMPeps
|
nikcleju@54
|
155 if (do_abs_ompeps)
|
nikcleju@54
|
156 timer_abs_ompeps = tic;
|
nikcleju@54
|
157 xrec_abs_ompeps(:,iy) = ABS_OMPeps_approx(y(:,iy), Omega, M, epsilon, lambda);
|
nikcleju@54
|
158 elapsed_abs_ompeps = elapsed_abs_ompeps + toc(timer_abs_ompeps);
|
nikcleju@54
|
159 %
|
nikcleju@54
|
160 err_abs_ompeps(iy) = norm(x0(:,iy) - xrec_abs_ompeps(:,iy));
|
nikcleju@54
|
161 relerr_abs_ompeps(iy) = err_abs_ompeps(iy) / norm(x0(:,iy));
|
nikcleju@54
|
162 end
|
nikcleju@54
|
163 % ABS-TST
|
nikcleju@54
|
164 if (do_abs_tst)
|
nikcleju@54
|
165 timer_abs_tst = tic;
|
nikcleju@54
|
166 xrec_abs_tst(:,iy) = ABS_TST_approx(y(:,iy), Omega, M, epsilon, lambda);
|
nikcleju@54
|
167 elapsed_abs_tst = elapsed_abs_tst + toc(timer_abs_tst);
|
nikcleju@54
|
168 %
|
nikcleju@54
|
169 err_abs_tst(iy) = norm(x0(:,iy) - xrec_abs_tst(:,iy));
|
nikcleju@54
|
170 relerr_abs_tst(iy) = err_abs_tst(iy) / norm(x0(:,iy));
|
nikcleju@54
|
171 end
|
nikcleju@54
|
172 % ABS-BP
|
nikcleju@54
|
173 if (do_abs_bp)
|
nikcleju@54
|
174 timer_abs_bp = tic;
|
nikcleju@54
|
175 xrec_abs_bp(:,iy) = ABS_BP_approx(y(:,iy), Omega, M, epsilon, lambda);
|
nikcleju@54
|
176 elapsed_abs_bp = elapsed_abs_bp + toc(timer_abs_bp);
|
nikcleju@54
|
177 %
|
nikcleju@54
|
178 err_abs_bp(iy) = norm(x0(:,iy) - xrec_abs_bp(:,iy));
|
nikcleju@54
|
179 relerr_abs_bp(iy) = err_abs_bp(iy) / norm(x0(:,iy));
|
nikcleju@54
|
180 end
|
nikcleju@54
|
181 % GAP
|
nikcleju@54
|
182 if (do_gap)
|
nikcleju@54
|
183 gapparams = [];
|
nikcleju@54
|
184 gapparams.num_iteration = 40;
|
nikcleju@54
|
185 gapparams.greedy_level = 0.9;
|
nikcleju@54
|
186 gapparams.stopping_coefficient_size = 1e-4;
|
nikcleju@54
|
187 gapparams.l2solver = 'pseudoinverse';
|
nikcleju@54
|
188 gapparams.noise_level = noiselevel;
|
nikcleju@54
|
189 timer_gap = tic;
|
nikcleju@54
|
190 xrec_gap(:,iy) = GAP(y(:,iy), M, M', Omega, Omega', gapparams, zeros(d,1));
|
nikcleju@54
|
191 elapsed_gap = elapsed_gap + toc(timer_gap);
|
nikcleju@54
|
192 %
|
nikcleju@54
|
193 err_gap(iy) = norm(x0(:,iy) - xrec_gap(:,iy));
|
nikcleju@54
|
194 relerr_gap(iy) = err_gap(iy) / norm(x0(:,iy));
|
nikcleju@54
|
195 end
|
nikcleju@54
|
196 % NESTA
|
nikcleju@54
|
197 if (do_nesta)
|
nikcleju@54
|
198 try
|
nikcleju@54
|
199 timer_nesta = tic;
|
nikcleju@54
|
200 xrec_nesta(:,iy) = do_nesta_DemoNonProjector(x0(:,iy), M, Omega', 0);
|
nikcleju@54
|
201 elapsed_nesta = elapsed_nesta + toc(timer_nesta);
|
nikcleju@54
|
202 catch err
|
nikcleju@54
|
203 disp('*****ERROR: NESTA throwed error *****');
|
nikcleju@54
|
204 xrec_nesta(:,iy) = zeros(size(x0(:,iy)));
|
nikcleju@54
|
205 end
|
nikcleju@54
|
206 %
|
nikcleju@54
|
207 err_nesta(iy) = norm(x0(:,iy) - xrec_nesta(:,iy));
|
nikcleju@54
|
208 relerr_nesta(iy) = err_nesta(iy) / norm(x0(:,iy));
|
nikcleju@54
|
209 end
|
nikcleju@54
|
210
|
nikcleju@54
|
211 % Update progressbar
|
nikcleju@54
|
212 % if do_progressbar
|
nikcleju@54
|
213 % %frac2 = iy/numvects;
|
nikcleju@54
|
214 % %frac1 = ((iparam-1) + frac2) / count;
|
nikcleju@54
|
215 % if norm(frac2 - 1) < 1e-6
|
nikcleju@54
|
216 % frac2 = 0;
|
nikcleju@54
|
217 % end
|
nikcleju@54
|
218 % frac2 = frac2 + incr2;
|
nikcleju@54
|
219 % frac1 = frac1 + incr1;
|
nikcleju@54
|
220 % progressbar(frac1, frac2);
|
nikcleju@54
|
221 % end
|
nikcleju@54
|
222 end
|
nikcleju@54
|
223
|
nikcleju@54
|
224 %--------------------------------
|
nikcleju@54
|
225 % Save results in big stucture & display
|
nikcleju@54
|
226 %--------------------------------
|
nikcleju@54
|
227 % Save reconstructed signals
|
nikcleju@54
|
228 % Save rel & abs errors
|
nikcleju@54
|
229 % Display error
|
nikcleju@54
|
230 disp(['Simulation no. ' num2str(iparam)]);
|
nikcleju@54
|
231 if (do_abs_ompk)
|
nikcleju@54
|
232 results(iparam).xrec_abs_ompk = xrec_abs_ompk;
|
nikcleju@54
|
233 results(iparam).err_abs_ompk = err_abs_ompk;
|
nikcleju@54
|
234 results(iparam).relerr_abs_ompk = relerr_abs_ompk;
|
nikcleju@54
|
235 disp([' ABS_OMPk: avg relative error = ' num2str(mean(relerr_abs_ompk))]);
|
nikcleju@54
|
236 end
|
nikcleju@54
|
237 if (do_abs_ompeps)
|
nikcleju@54
|
238 results(iparam).xrec_abs_ompeps = xrec_abs_ompeps;
|
nikcleju@54
|
239 results(iparam).err_abs_ompeps = err_abs_ompeps;
|
nikcleju@54
|
240 results(iparam).relerr_abs_ompeps = relerr_abs_ompeps;
|
nikcleju@54
|
241 disp([' ABS_OMPeps: avg relative error = ' num2str(mean(relerr_abs_ompeps))]);
|
nikcleju@54
|
242 end
|
nikcleju@54
|
243 if (do_abs_tst)
|
nikcleju@54
|
244 results(iparam).xrec_abs_tst = xrec_abs_tst;
|
nikcleju@54
|
245 results(iparam).err_abs_tst = err_abs_tst;
|
nikcleju@54
|
246 results(iparam).relerr_abs_tst = relerr_abs_tst;
|
nikcleju@54
|
247 disp([' ABS_TST: avg relative error = ' num2str(mean(relerr_abs_tst))]);
|
nikcleju@54
|
248 end
|
nikcleju@54
|
249 if (do_abs_bp)
|
nikcleju@54
|
250 results(iparam).xrec_abs_bp = xrec_abs_bp;
|
nikcleju@54
|
251 results(iparam).err_abs_bp = err_abs_bp;
|
nikcleju@54
|
252 results(iparam).relerr_abs_bp = relerr_abs_bp;
|
nikcleju@54
|
253 disp([' ABS_BP: avg relative error = ' num2str(mean(relerr_abs_bp))]);
|
nikcleju@54
|
254 end
|
nikcleju@54
|
255 if (do_gap)
|
nikcleju@54
|
256 results(iparam).xrec_gap = xrec_gap;
|
nikcleju@54
|
257 results(iparam).err_gap = err_gap;
|
nikcleju@54
|
258 results(iparam).relerr_gap = relerr_gap;
|
nikcleju@54
|
259 disp([' GAP: avg relative error = ' num2str(mean(relerr_gap))]);
|
nikcleju@54
|
260 end
|
nikcleju@54
|
261 if (do_nesta)
|
nikcleju@54
|
262 results(iparam).xrec_nesta = xrec_nesta;
|
nikcleju@54
|
263 results(iparam).err_nesta = err_nesta;
|
nikcleju@54
|
264 results(iparam).relerr_nesta = relerr_nesta;
|
nikcleju@54
|
265 disp([' NESTA: avg relative error = ' num2str(mean(relerr_nesta))]);
|
nikcleju@54
|
266 end
|
nikcleju@54
|
267 end
|
nikcleju@54
|
268
|
nikcleju@54
|
269 % =================================
|
nikcleju@54
|
270 % Save
|
nikcleju@54
|
271 % =================================
|
nikcleju@54
|
272 save mat/avgerr_SNR20_lbd1e-2
|
nikcleju@54
|
273
|
nikcleju@54
|
274 % =================================
|
nikcleju@54
|
275 % Plot phase transition
|
nikcleju@54
|
276 % =================================
|
nikcleju@54
|
277 %--------------------------------
|
nikcleju@54
|
278 % Prepare
|
nikcleju@54
|
279 %--------------------------------
|
nikcleju@54
|
280 %d = 200;
|
nikcleju@54
|
281 %m = 190;
|
nikcleju@54
|
282 %exactthr = d/m * noiselevel;
|
nikcleju@54
|
283 %sigma = 1.2;
|
nikcleju@54
|
284 iparam = 1;
|
nikcleju@54
|
285 for idelta = 1:numel(deltas)
|
nikcleju@54
|
286 for irho = 1:numel(rhos)
|
nikcleju@54
|
287 % Create exact recovery count matrix
|
nikcleju@54
|
288 % nexact_abs_bp (irho, idelta) = sum(results(iparam).relerr_abs_bp < exactthr);
|
nikcleju@54
|
289 % nexact_abs_ompk (irho, idelta) = sum(results(iparam).relerr_abs_ompk < exactthr);
|
nikcleju@54
|
290 % nexact_abs_ompeps (irho, idelta) = sum(results(iparam).relerr_abs_ompeps < exactthr);
|
nikcleju@54
|
291 % nexact_gap (irho, idelta) = sum(results(iparam).relerr_gap < exactthr);
|
nikcleju@54
|
292 % nexact_abs_tst (irho, idelta) = sum(results(iparam).relerr_abs_tst < exactthr);
|
nikcleju@54
|
293 % % nexact_nesta(irho, idelta) = sum(results(iparam).relerr_nesta < exactthr);
|
nikcleju@54
|
294
|
nikcleju@54
|
295 % Get histogram (for a single param set only!)
|
nikcleju@54
|
296 % hist_abs_ompk = hist(results(iparam).relerr_abs_ompk, 0.001:0.001:0.1);
|
nikcleju@54
|
297 % hist_abs_ompeps = hist(results(iparam).relerr_abs_ompeps, 0.001:0.001:0.1);
|
nikcleju@54
|
298 % hist_abs_tst = hist(results(iparam).relerr_abs_tst, 0.001:0.001:0.1);
|
nikcleju@54
|
299 % hist_abs_bp = hist(results(iparam).relerr_abs_bp, 0.001:0.001:0.1);
|
nikcleju@54
|
300 % hist_gap = hist(results(iparam).relerr_gap, 0.001:0.001:0.1);
|
nikcleju@54
|
301
|
nikcleju@54
|
302 % Compute average error value
|
nikcleju@54
|
303 if (do_abs_ompk)
|
nikcleju@54
|
304 avgerr_abs_ompk(irho, idelta) = 1 - mean(results(iparam).relerr_abs_ompk);
|
nikcleju@54
|
305 avgerr_abs_ompk(avgerr_abs_ompk < 0) = 0;
|
nikcleju@54
|
306 end
|
nikcleju@54
|
307 if (do_abs_ompeps)
|
nikcleju@54
|
308 avgerr_abs_ompeps(irho, idelta) = 1 - mean(results(iparam).relerr_abs_ompeps);
|
nikcleju@54
|
309 avgerr_abs_ompeps(avgerr_abs_ompeps < 0) = 0;
|
nikcleju@54
|
310 end
|
nikcleju@54
|
311 if (do_abs_tst)
|
nikcleju@54
|
312 avgerr_abs_tst(irho, idelta) = 1 - mean(results(iparam).relerr_abs_tst);
|
nikcleju@54
|
313 avgerr_abs_tst(avgerr_abs_tst < 0) = 0;
|
nikcleju@54
|
314 end
|
nikcleju@54
|
315 if (do_abs_bp)
|
nikcleju@54
|
316 avgerr_abs_bp(irho, idelta) = 1 - mean(results(iparam).relerr_abs_bp);
|
nikcleju@54
|
317 avgerr_abs_bp(avgerr_abs_bp < 0) = 0;
|
nikcleju@54
|
318 end
|
nikcleju@54
|
319 if (do_gap)
|
nikcleju@54
|
320 avgerr_gap(irho, idelta) = 1 - mean(results(iparam).relerr_gap);
|
nikcleju@54
|
321 avgerr_gap(avgerr_gap < 0) = 0;
|
nikcleju@54
|
322 end
|
nikcleju@54
|
323 if (do_nesta)
|
nikcleju@54
|
324 avgerr_nesta(irho, idelta) = 1 - mean(results(iparam).relerr_nesta);
|
nikcleju@54
|
325 avgerr_nesta(avgerr_nesta < 0) = 0;
|
nikcleju@54
|
326 end
|
nikcleju@54
|
327
|
nikcleju@54
|
328 iparam = iparam + 1;
|
nikcleju@54
|
329 end
|
nikcleju@54
|
330 end
|
nikcleju@54
|
331
|
nikcleju@54
|
332 %--------------------------------
|
nikcleju@54
|
333 % Plot
|
nikcleju@54
|
334 %--------------------------------
|
nikcleju@54
|
335 show_phasetrans = @show_phasetrans_win;
|
nikcleju@54
|
336 iptsetpref('ImshowAxesVisible', 'on');
|
nikcleju@54
|
337 close all
|
nikcleju@54
|
338 figbase = 'figs/avgerr_SNR20_lbd1e-2_';
|
nikcleju@54
|
339 do_save = 1;
|
nikcleju@54
|
340 %
|
nikcleju@54
|
341 if (do_abs_ompk)
|
nikcleju@54
|
342 figure;
|
nikcleju@54
|
343 %h = show_phasetrans(nexact_abs_ompk, numvects);
|
nikcleju@54
|
344 %bar(0.001:0.001:0.1, hist_abs_ompk);
|
nikcleju@54
|
345 h = show_phasetrans(avgerr_abs_ompk, 1);
|
nikcleju@54
|
346 if do_save
|
nikcleju@54
|
347 figname = [figbase 'ABS_OMPk'];
|
nikcleju@54
|
348 saveas(h, [figname '.fig']);
|
nikcleju@54
|
349 saveas(h, [figname '.png']);
|
nikcleju@54
|
350 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
351 end
|
nikcleju@54
|
352 end
|
nikcleju@54
|
353 %
|
nikcleju@54
|
354 if (do_abs_ompeps)
|
nikcleju@54
|
355 figure;
|
nikcleju@54
|
356 %h = show_phasetrans(nexact_abs_ompeps, numvects);
|
nikcleju@54
|
357 %bar(0.001:0.001:0.1, hist_abs_ompeps);
|
nikcleju@54
|
358 h = show_phasetrans(avgerr_abs_ompeps, 1);
|
nikcleju@54
|
359 if do_save
|
nikcleju@54
|
360 figname = [figbase 'ABS_OMPeps'];
|
nikcleju@54
|
361 saveas(h, [figname '.fig']);
|
nikcleju@54
|
362 saveas(h, [figname '.png']);
|
nikcleju@54
|
363 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
364 end
|
nikcleju@54
|
365 end
|
nikcleju@54
|
366 %
|
nikcleju@54
|
367 if (do_abs_tst)
|
nikcleju@54
|
368 figure;
|
nikcleju@54
|
369 %h = show_phasetrans(nexact_abs_tst, numvects);
|
nikcleju@54
|
370 %bar(0.001:0.001:0.1, hist_abs_tst);
|
nikcleju@54
|
371 h = show_phasetrans(avgerr_abs_tst, 1);
|
nikcleju@54
|
372 if do_save
|
nikcleju@54
|
373 figname = [figbase 'ABS_TST'];
|
nikcleju@54
|
374 saveas(h, [figname '.fig']);
|
nikcleju@54
|
375 saveas(h, [figname '.png']);
|
nikcleju@54
|
376 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
377 end
|
nikcleju@54
|
378 end
|
nikcleju@54
|
379 %
|
nikcleju@54
|
380 if (do_abs_bp)
|
nikcleju@54
|
381 figure;
|
nikcleju@54
|
382 %h = show_phasetrans(nexact_abs_bp, numvects);
|
nikcleju@54
|
383 %bar(0.001:0.001:0.1, hist_abs_bp);
|
nikcleju@54
|
384 h = show_phasetrans(avgerr_abs_bp, 1);
|
nikcleju@54
|
385 if do_save
|
nikcleju@54
|
386 figname = [figbase 'ABS_BP'];
|
nikcleju@54
|
387 saveas(h, [figname '.fig']);
|
nikcleju@54
|
388 saveas(h, [figname '.png']);
|
nikcleju@54
|
389 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
390 end
|
nikcleju@54
|
391 end
|
nikcleju@54
|
392 %
|
nikcleju@54
|
393 if (do_gap)
|
nikcleju@54
|
394 figure;
|
nikcleju@54
|
395 %h = show_phasetrans(nexact_gap, numvects);
|
nikcleju@54
|
396 %bar(0.001:0.001:0.1, hist_gap);
|
nikcleju@54
|
397 h = show_phasetrans(avgerr_gap, 1);
|
nikcleju@54
|
398 if do_save
|
nikcleju@54
|
399 figname = [figbase 'GAP'];
|
nikcleju@54
|
400 saveas(h, [figname '.fig']);
|
nikcleju@54
|
401 saveas(h, [figname '.png']);
|
nikcleju@54
|
402 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
403 end
|
nikcleju@54
|
404 end
|
nikcleju@54
|
405 %
|
nikcleju@54
|
406 if (do_nesta)
|
nikcleju@54
|
407 figure;
|
nikcleju@54
|
408 %h = show_phasetrans(nexact_nesta, numvects);
|
nikcleju@54
|
409 %bar(0.001:0.001:0.1, hist_nesta);
|
nikcleju@54
|
410 h = show_phasetrans(avgerr_nesta, 1);
|
nikcleju@54
|
411 if do_save
|
nikcleju@54
|
412 figname = [figbase 'NESTA'];
|
nikcleju@54
|
413 saveas(h, [figname '.fig']);
|
nikcleju@54
|
414 saveas(h, [figname '.png']);
|
nikcleju@54
|
415 saveTightFigure(h, [figname '.pdf']);
|
nikcleju@54
|
416 end
|
nikcleju@54
|
417 end |