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