Mercurial > hg > pycsalgos
comparison scripts/ABSapprox.py @ 20:45255b0a6dba
2011 11 08 Worked from school
author | nikcleju |
---|---|
date | Tue, 08 Nov 2011 14:43:29 +0000 |
parents | ef0629f859a3 |
children | 2dd78e37b23a |
comparison
equal
deleted
inserted
replaced
19:ef0629f859a3 | 20:45255b0a6dba |
---|---|
26 aggDupper = np.dot(M,D) | 26 aggDupper = np.dot(M,D) |
27 aggDlower = Vt[-(N-n):,:] | 27 aggDlower = Vt[-(N-n):,:] |
28 aggD = np.concatenate((aggDupper, lbd * aggDlower)) | 28 aggD = np.concatenate((aggDupper, lbd * aggDlower)) |
29 aggy = np.concatenate((y, np.zeros(N-n))) | 29 aggy = np.concatenate((y, np.zeros(N-n))) |
30 | 30 |
31 sigmamin = 0.1 | 31 sigmamin = 0.01 |
32 return aggD,aggy,epsilon,sigmamin | 32 sigma_decrease_factor = 0.8 |
33 mu_0 = 2 | |
34 L = 10 | |
35 return aggD,aggy,epsilon,sigmamin,sigma_decrease_factor,mu_0,L | |
36 | |
37 def post_multiply_with_D(D,gamma): | |
38 return np.dot(D,gamma) | |
39 def post_do_nothing(D,gamma): | |
40 return gamma | |
33 | 41 |
34 # Define tuples (algorithm setup function, algorithm function, name) | 42 # Define tuples (algorithm setup function, algorithm function, name) |
35 gap = (gap_paramsetup, pyCSalgos.GAP.GAP.GAP, 'GAP') | 43 gap = (gap_paramsetup, pyCSalgos.GAP.GAP.GAP, post_do_nothing, 'GAP') |
36 sl0 = (sl0_paramsetup, pyCSalgos.SL0.SL0_approx.SL0_approx, 'SL0_approx') | 44 sl0 = (sl0_paramsetup, pyCSalgos.SL0.SL0_approx.SL0_approx, post_multiply_with_D, 'SL0_approx') |
45 #sl0 = (sl0_paramsetup, lambda x: np.dot(x[0],x[1]()), 'SL0_approx') | |
37 | 46 |
38 # Main function | 47 # Main function |
39 def mainrun(): | 48 def mainrun(): |
40 | 49 |
41 # Define which algorithms to run | 50 # Define which algorithms to run |
44 | 53 |
45 # Set up experiment parameters | 54 # Set up experiment parameters |
46 sigma = 2.0; | 55 sigma = 2.0; |
47 delta = 0.8; | 56 delta = 0.8; |
48 rho = 0.15; | 57 rho = 0.15; |
49 numvects = 2; # Number of vectors to generate | 58 numvects = 10; # Number of vectors to generate |
50 SNRdb = 20; # This is norm(signal)/norm(noise), so power, not energy | 59 SNRdb = 20.; # This is norm(signal)/norm(noise), so power, not energy |
51 | 60 |
52 # Process parameters | 61 # Process parameters |
53 noiselevel = 1 / (10^(SNRdb/10)); | 62 noiselevel = 1.0 / (10.0**(SNRdb/10.0)); |
54 d = 50; | 63 d = 50; |
55 p = round(sigma*d); | 64 p = round(sigma*d); |
56 m = round(delta*d); | 65 m = round(delta*d); |
57 l = round(d - rho*m); | 66 l = round(d - rho*m); |
58 | 67 |
73 | 82 |
74 xrec = dict() | 83 xrec = dict() |
75 err = dict() | 84 err = dict() |
76 relerr = dict() | 85 relerr = dict() |
77 for i,algo in zip(np.arange(numalgos),algos): | 86 for i,algo in zip(np.arange(numalgos),algos): |
78 xrec[algo[2]] = np.zeros((lambdas.size, d, y.shape[1])) | 87 xrec[algo[3]] = np.zeros((lambdas.size, d, y.shape[1])) |
79 err[algo[2]] = np.zeros((lambdas.size, y.shape[1])) | 88 err[algo[3]] = np.zeros((lambdas.size, y.shape[1])) |
80 relerr[algo[2]] = np.zeros((lambdas.size, y.shape[1])) | 89 relerr[algo[3]] = np.zeros((lambdas.size, y.shape[1])) |
81 | 90 |
82 for ilbd,lbd in zip(np.arange(lambdas.size),lambdas): | 91 for ilbd,lbd in zip(np.arange(lambdas.size),lambdas): |
83 for iy in np.arange(y.shape[1]): | 92 for iy in np.arange(y.shape[1]): |
84 for algosetupfunc,algofunc,strname in algos: | 93 for algosetupfunc,algofunc,algopostfunc,strname in algos: |
85 epsilon = 1.1 * np.linalg.norm(realnoise[:,iy]) | 94 epsilon = 1.1 * np.linalg.norm(realnoise[:,iy]) |
86 | 95 |
87 inparams = algosetupfunc(y[:,iy],M,Omega,epsilon,lbd) | 96 inparams = algosetupfunc(y[:,iy],M,Omega,epsilon,lbd) |
88 xrec[strname][ilbd,:,iy] = algofunc(*inparams)[0] | 97 xrec[strname][ilbd,:,iy] = algopostfunc(algofunc(*inparams)[0]) |
89 | 98 |
90 err[strname][ilbd,iy] = np.linalg.norm(x0[:,iy] - xrec[strname][ilbd,:,iy]) | 99 err[strname][ilbd,iy] = np.linalg.norm(x0[:,iy] - xrec[strname][ilbd,:,iy]) |
91 relerr[strname][ilbd,iy] = err[strname][ilbd,iy] / np.linalg.norm(x0[:,iy]) | 100 relerr[strname][ilbd,iy] = err[strname][ilbd,iy] / np.linalg.norm(x0[:,iy]) |
92 | 101 |
93 print 'Lambda = ',lbd,' :' | 102 print 'Lambda = ',lbd,' :' |