Mercurial > hg > absrec
comparison ABSlambda.py @ 21:d395461b92ae tip
Lots and lots of modifications. Approximate recovery script working.
author | Nic Cleju <nikcleju@gmail.com> |
---|---|
date | Mon, 23 Apr 2012 10:54:57 +0300 |
parents | 7fdf964f4edd |
children |
comparison
equal
deleted
inserted
replaced
20:eccc7a5b9ee3 | 21:d395461b92ae |
---|---|
28 aggDupper = numpy.dot(M,D) | 28 aggDupper = numpy.dot(M,D) |
29 aggDlower = Vt[-(N-n):,:] | 29 aggDlower = Vt[-(N-n):,:] |
30 aggD = numpy.vstack((aggDupper, lbd * aggDlower)) | 30 aggD = numpy.vstack((aggDupper, lbd * aggDlower)) |
31 aggy = numpy.concatenate((y, numpy.zeros(N-n))) | 31 aggy = numpy.concatenate((y, numpy.zeros(N-n))) |
32 | 32 |
33 return numpy.dot(D, pyCSalgos.SL0.SL0_approx.SL0_approx(aggD,aggy,epsilon,sigma_min,sigma_decrease_factor,mu_0,L,A_pinv,true_s)) | 33 #return numpy.dot(D, pyCSalgos.SL0.SL0_approx.SL0_approx(aggD,aggy,epsilon,sigma_min,sigma_decrease_factor,mu_0,L,A_pinv,true_s)) |
34 return numpy.dot(D, pyCSalgos.SL0.SL0_approx.SL0_approx_dai(aggD,aggy,epsilon,sigma_min,sigma_decrease_factor,mu_0,L,A_pinv,true_s)) | |
34 | 35 |
35 def bp(y,M,Omega,epsilon,lbd, x0, lbtol=1e-3, mu=10, cgtol=1e-8, cgmaxiter=200, verbose=False): | 36 def bp(y,M,Omega,epsilon,lbd, x0, lbtol=1e-3, mu=10, cgtol=1e-8, cgmaxiter=200, verbose=False): |
36 """ | 37 """ |
37 ABS-lambda: Basis Pursuit (based on l1magic toolbox) | 38 ABS-lambda: Basis Pursuit (based on l1magic toolbox) |
38 """ | 39 """ |
53 N,n = Omega.shape | 54 N,n = Omega.shape |
54 D = numpy.linalg.pinv(Omega) | 55 D = numpy.linalg.pinv(Omega) |
55 U,S,Vt = numpy.linalg.svd(D) | 56 U,S,Vt = numpy.linalg.svd(D) |
56 aggDupper = numpy.dot(M,D) | 57 aggDupper = numpy.dot(M,D) |
57 aggDlower = Vt[-(N-n):,:] | 58 aggDlower = Vt[-(N-n):,:] |
58 aggD = numpy.hstack((aggDupper, lbd * aggDlower)) | 59 aggD = numpy.vstack((aggDupper, lbd * aggDlower)) |
59 aggy = numpy.concatenate((y, numpy.zeros(N-n))) | 60 aggy = numpy.concatenate((y, numpy.zeros(N-n))) |
60 | 61 |
61 opts = dict() | 62 opts = dict() |
62 opts['stopCrit'] = 'mse' | 63 opts['stopCrit'] = 'mse' |
63 opts['stopTol'] = epsilon**2 / aggy.size | 64 opts['stopTol'] = epsilon**2 / aggy.size |
74 aggDlower = Vt[-(N-n):,:] | 75 aggDlower = Vt[-(N-n):,:] |
75 aggD = numpy.vstack((aggDupper, lbd * aggDlower)) | 76 aggD = numpy.vstack((aggDupper, lbd * aggDlower)) |
76 aggy = numpy.concatenate((y, numpy.zeros(N-n))) | 77 aggy = numpy.concatenate((y, numpy.zeros(N-n))) |
77 | 78 |
78 tol = epsilon / numpy.linalg.norm(aggy) | 79 tol = epsilon / numpy.linalg.norm(aggy) |
79 return numpy.dot(D, pyCSalgos.RecomTST.RecommendedTST.RecommendedTST(aggD, aggy, nsweep, tol, xinitial, ro)) | 80 return numpy.dot(D, pyCSalgos.TST.RecommendedTST.RecommendedTST(aggD, aggy, nsweep, tol, xinitial, ro)) |
80 | 81 |