nikcleju@0
|
1 # -*- coding: utf-8 -*-
|
nikcleju@0
|
2 """
|
nikcleju@17
|
3 Defines standard parameters for approximate reconstruction simulation
|
nikcleju@0
|
4
|
nikcleju@17
|
5 Author: Nicolae Cleju
|
nikcleju@0
|
6 """
|
nikcleju@17
|
7 __author__ = "Nicolae Cleju"
|
nikcleju@17
|
8 __license__ = "GPL"
|
nikcleju@17
|
9 __email__ = "nikcleju@gmail.com"
|
nikcleju@0
|
10
|
nikcleju@0
|
11 import numpy
|
nikcleju@17
|
12
|
nikcleju@17
|
13 # Solver algorithms to run
|
nikcleju@0
|
14 from algos import *
|
nikcleju@0
|
15
|
nikcleju@17
|
16 # Test parameters
|
nikcleju@15
|
17 paramstest = dict()
|
nikcleju@21
|
18 #paramstest['algosN'] = nesta, # tuple of algorithms not depending on lambda
|
nikcleju@21
|
19 #paramstest['algosL'] = lambda_sl0, # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@21
|
20 paramstest['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@21
|
21 paramstest['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst
|
nikcleju@15
|
22 paramstest['d'] = 50.0
|
nikcleju@15
|
23 paramstest['sigma'] = 2.0
|
nikcleju@15
|
24 paramstest['deltas'] = numpy.array([0.05, 0.45, 0.95])
|
nikcleju@15
|
25 paramstest['rhos'] = numpy.array([0.05, 0.45, 0.95])
|
nikcleju@15
|
26 #deltas = numpy.array([0.95])
|
nikcleju@15
|
27 #deltas = numpy.arange(0.05,1.,0.05)
|
nikcleju@15
|
28 #rhos = numpy.array([0.05])
|
nikcleju@17
|
29 paramstest['numvects'] = 10; # Number of vectors to generate
|
nikcleju@21
|
30 paramstest['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@15
|
31 # Values for lambda
|
nikcleju@15
|
32 #lambdas = [0 10.^linspace(-5, 4, 10)];
|
nikcleju@15
|
33 paramstest['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@15
|
34 paramstest['savedataname'] = 'approx_pt_stdtest.mat'
|
nikcleju@15
|
35 paramstest['saveplotbase'] = 'approx_pt_stdtest_'
|
nikcleju@15
|
36 paramstest['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@0
|
37
|
nikcleju@0
|
38
|
nikcleju@21
|
39 # Prove 11 convergence
|
nikcleju@19
|
40 paramsl1prove = dict()
|
nikcleju@19
|
41 paramsl1prove['algosN'] = nesta, # tuple of algorithms not depending on lambda
|
nikcleju@19
|
42 paramsl1prove['algosL'] = lambda_bp, # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@19
|
43 paramsl1prove['d'] = 50.0
|
nikcleju@19
|
44 paramsl1prove['sigma'] = 2.0
|
nikcleju@19
|
45 paramsl1prove['deltas'] = numpy.array([0.8]) # m = 0.8*50 = 40
|
nikcleju@19
|
46 paramsl1prove['rhos'] = numpy.array([0.15]) # l = d - rho*m = 50 - 0.15*40 = 44
|
nikcleju@19
|
47 paramsl1prove['numvects'] = 100; # Number of vectors to generate
|
nikcleju@19
|
48 paramsl1prove['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@19
|
49 paramsl1prove['lambdas'] = numpy.array([0.00001, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000])
|
nikcleju@19
|
50 paramsl1prove['savedataname'] = 'prove_approx_ell1.mat'
|
nikcleju@19
|
51 paramsl1prove['saveplotbase'] = 'prove_approx_ell1'
|
nikcleju@19
|
52 paramsl1prove['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@19
|
53
|
nikcleju@19
|
54
|
nikcleju@0
|
55 # Standard parameters 1
|
nikcleju@0
|
56 # All algorithms, 100 vectors
|
nikcleju@17
|
57 # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000
|
nikcleju@17
|
58 # Noise 40db
|
nikcleju@17
|
59 params1 = dict()
|
nikcleju@17
|
60 params1['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@17
|
61 params1['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@17
|
62 params1['d'] = 50.0
|
nikcleju@21
|
63 params1['sigma'] = 1.2
|
nikcleju@17
|
64 params1['deltas'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@17
|
65 params1['rhos'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
66 params1['numvects'] = 100; # Number of vectors to generate
|
nikcleju@17
|
67 params1['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@17
|
68 params1['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@21
|
69 params1['savedataname'] = 'approx_pt_params1.mat'
|
nikcleju@21
|
70 params1['saveplotbase'] = 'approx_pt_params1_'
|
nikcleju@17
|
71 params1['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@0
|
72
|
nikcleju@0
|
73 # Standard parameters 2
|
nikcleju@0
|
74 # All algorithms, 100 vectors
|
nikcleju@17
|
75 # d = 20, sigma = 10, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000
|
nikcleju@17
|
76 # Noise 40db
|
nikcleju@17
|
77 params2 = dict()
|
nikcleju@17
|
78 params2['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@17
|
79 params2['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@21
|
80 params2['d'] = 50.0
|
nikcleju@21
|
81 params2['sigma'] = 2
|
nikcleju@17
|
82 params2['deltas'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@17
|
83 params2['rhos'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
84 params2['numvects'] = 100; # Number of vectors to generate
|
nikcleju@17
|
85 params2['SNRdb'] = 40.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@17
|
86 params2['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@21
|
87 params2['savedataname'] = 'approx_pt_params2.mat'
|
nikcleju@21
|
88 params2['saveplotbase'] = 'approx_pt_params2_'
|
nikcleju@17
|
89 params2['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@0
|
90
|
nikcleju@0
|
91
|
nikcleju@17
|
92 # Standard parameters 3
|
nikcleju@0
|
93 # All algorithms, 100 vectors
|
nikcleju@17
|
94 # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000
|
nikcleju@17
|
95 # Identical with 1 but with 20dB SNR noise
|
nikcleju@17
|
96 params3 = dict()
|
nikcleju@17
|
97 params3['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@17
|
98 params3['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@17
|
99 params3['d'] = 50.0
|
nikcleju@21
|
100 params3['sigma'] = 1.2
|
nikcleju@17
|
101 params3['deltas'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@17
|
102 params3['rhos'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
103 params3['numvects'] = 100; # Number of vectors to generate
|
nikcleju@17
|
104 params3['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@17
|
105 params3['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@21
|
106 #params3['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100])
|
nikcleju@21
|
107 params3['savedataname'] = 'approx_pt_params3.mat'
|
nikcleju@21
|
108 params3['saveplotbase'] = 'approx_pt_params3_'
|
nikcleju@17
|
109 params3['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@0
|
110
|
nikcleju@0
|
111 # Standard parameters 4
|
nikcleju@0
|
112 # All algorithms, 100 vectors
|
nikcleju@17
|
113 # d = 20, sigma = 10, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000
|
nikcleju@17
|
114 # Identical to 2 but with 20dB SNR noise
|
nikcleju@17
|
115 params4 = dict()
|
nikcleju@17
|
116 params4['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@17
|
117 params4['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@21
|
118 params4['d'] = 50.0
|
nikcleju@21
|
119 params4['sigma'] = 2.0
|
nikcleju@17
|
120 params4['deltas'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@17
|
121 params4['rhos'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
122 params4['numvects'] = 100; # Number of vectors to generate
|
nikcleju@17
|
123 params4['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@17
|
124 params4['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@21
|
125 #params4['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100])
|
nikcleju@21
|
126 params4['savedataname'] = 'approx_pt_params4.mat'
|
nikcleju@21
|
127 params4['saveplotbase'] = 'approx_pt_params4_'
|
nikcleju@17
|
128 params4['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@21
|
129
|
nikcleju@21
|
130
|
nikcleju@21
|
131 # Standard parameters 5
|
nikcleju@21
|
132 # All algorithms, 100 vectors
|
nikcleju@21
|
133 # d = 50, sigma = 2, delta and rho full resolution (0.05 step), lambdas = 0, 1e-4, 1e-2, 1, 100, 10000
|
nikcleju@21
|
134 # VIRTUALLY NO NOISE, Noise 200db
|
nikcleju@21
|
135 params5 = dict()
|
nikcleju@21
|
136 params5['algosN'] = gap,mixed_sl0,mixed_bp,nesta # tuple of algorithms not depending on lambda
|
nikcleju@21
|
137 params5['algosL'] = lambda_sl0,lambda_bp,lambda_ompeps,lambda_tst # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@21
|
138 params5['d'] = 50.0
|
nikcleju@21
|
139 params5['sigma'] = 1.2
|
nikcleju@21
|
140 params5['deltas'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
141 params5['rhos'] = numpy.arange(0.05,1.,0.05)
|
nikcleju@21
|
142 params5['numvects'] = 10; # Number of vectors to generate
|
nikcleju@21
|
143 params5['SNRdb'] = 200.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@21
|
144 params5['lambdas'] = numpy.array([0., 0.0001, 0.01, 1, 100, 10000])
|
nikcleju@21
|
145 params5['savedataname'] = 'approx_pt_params5.mat'
|
nikcleju@21
|
146 params5['saveplotbase'] = 'approx_pt_params5_'
|
nikcleju@21
|
147 params5['saveplotexts'] = ('png','pdf','eps')
|
nikcleju@21
|
148
|
nikcleju@21
|
149 params3sl0 = dict()
|
nikcleju@21
|
150 params3sl0['algosN'] = mixed_sl0, # tuple of algorithms not depending on lambda
|
nikcleju@21
|
151 params3sl0['algosL'] = lambda_sl0, # tuple of algorithms depending on lambda (ABS-lambda)
|
nikcleju@21
|
152 params3sl0['d'] = 50.0
|
nikcleju@21
|
153 params3sl0['sigma'] = 1.2
|
nikcleju@21
|
154 params3sl0['deltas'] = numpy.arange(0.05,1.,0.25)
|
nikcleju@21
|
155 params3sl0['rhos'] = numpy.arange(0.05,1.,0.25)
|
nikcleju@21
|
156 #params3sl0['deltas'] = numpy.array([0.85])
|
nikcleju@21
|
157 #params3sl0['rhos'] = numpy.array([0.15])
|
nikcleju@21
|
158 params3sl0['numvects'] = 10; # Number of vectors to generate
|
nikcleju@21
|
159 params3sl0['SNRdb'] = 20.; # This is norm(signal)/norm(noise), so power, not energy
|
nikcleju@21
|
160 #params3sl0['lambdas'] = numpy.array([0., 0.01, 0.1, 1, 10, 100])
|
nikcleju@21
|
161 params3sl0['lambdas'] = numpy.array([0.0001, 10000])
|
nikcleju@21
|
162 params3sl0['savedataname'] = 'approx_pt_params3sl0.mat'
|
nikcleju@21
|
163 params3sl0['saveplotbase'] = 'approx_pt_params3sl0_'
|
nikcleju@21
|
164 params3sl0['saveplotexts'] = ('png','pdf','eps') |