Mercurial > hg > absrec
comparison ABSexact.py @ 13:a2d881253324
In working, not debugged yet
author | Nic Cleju <nikcleju@gmail.com> |
---|---|
date | Mon, 12 Mar 2012 17:04:00 +0200 |
parents | b48f725ceafa |
children | f2eb027ed101 |
comparison
equal
deleted
inserted
replaced
12:86e1204b9e69 | 13:a2d881253324 |
---|---|
1 # -*- coding: utf-8 -*- | |
2 """ | |
3 Created on Fri Mar 09 14:06:13 2012 | |
4 | |
5 @author: ncleju | |
6 """ | |
7 | |
8 import numpy | |
9 import pyCSalgos.BP.l1eq_pd | |
10 import pyCSalgos.OMP.omp_QR | |
11 import pyCSalgos.SL0.SL0 | |
12 import pyCSalgos.TST.RecommendedTST | |
13 | |
14 def bp(y,M,Omega,x0, lbtol=1e-3, mu=10, cgtol=1e-8, cgmaxiter=200, verbose=False): | |
15 | |
16 N,n = Omega.shape | |
17 D = numpy.linalg.pinv(Omega) | |
18 U,S,Vt = numpy.linalg.svd(D) | |
19 Aextra = Vt[-(N-n):,:] | |
20 | |
21 # Create aggregate problem | |
22 Atilde = numpy.vstack((numpy.dot(M,D), Aextra)) | |
23 ytilde = numpy.concatenate((y,numpy.zeros(N-n))) | |
24 | |
25 return numpy.dot(D , pyCSalgos.BP.l1eq_pd.l1eq_pd(x0,Atilde,Atilde.T,ytilde, lbtol, mu, cgtol, cgmaxiter, verbose)) | |
26 | |
27 def ompeps(y,M,Omega,epsilon): | |
28 | |
29 N,n = Omega.shape | |
30 D = numpy.linalg.pinv(Omega) | |
31 U,S,Vt = numpy.linalg.svd(D) | |
32 Aextra = Vt[-(N-n):,:] | |
33 | |
34 # Create aggregate problem | |
35 Atilde = numpy.vstack((numpy.dot(M,D), Aextra)) | |
36 ytilde = numpy.concatenate((y,numpy.zeros(N-n))) | |
37 | |
38 opts = dict() | |
39 opts['stopCrit'] = 'mse' | |
40 opts['stopTol'] = epsilon | |
41 return numpy.dot(D , pyCSalgos.OMP.omp_QR.greed_omp_qr(aggy,aggD,aggD.shape[1],opts)[0]) | |
42 | |
43 def ompk(y,M,Omega,k): | |
44 | |
45 N,n = Omega.shape | |
46 D = numpy.linalg.pinv(Omega) | |
47 U,S,Vt = numpy.linalg.svd(D) | |
48 Aextra = Vt[-(N-n):,:] | |
49 | |
50 # Create aggregate problem | |
51 Atilde = numpy.vstack((numpy.dot(M,D), Aextra)) | |
52 ytilde = numpy.concatenate((y,numpy.zeros(N-n))) | |
53 | |
54 opts = dict() | |
55 opts['stopTol'] = k | |
56 return numpy.dot(D , pyCSalgos.OMP.omp_QR.greed_omp_qr(aggy,aggD,aggD.shape[1],opts)[0]) | |
57 | |
58 def sl0(y,M,Omega, sigma_min, sigma_decrease_factor=0.5, mu_0=2, L=3, true_s=None): | |
59 | |
60 N,n = Omega.shape | |
61 D = numpy.linalg.pinv(Omega) | |
62 U,S,Vt = numpy.linalg.svd(D) | |
63 Aextra = Vt[-(N-n):,:] | |
64 | |
65 # Create aggregate problem | |
66 Atilde = numpy.vstack((numpy.dot(M,D), Aextra)) | |
67 ytilde = numpy.concatenate((y,numpy.zeros(N-n))) | |
68 | |
69 return numpy.dot(D, pyCSalgos.SL0.SL0.SL0(Atilde,ytilde,sigma_min,sigma_decrease_factor,mu_0,L,true_s)) | |
70 | |
71 def tst_recom(y,M,Omega, nsweep=300, tol=0.00001, xinitial=None, ro=None): | |
72 | |
73 N,n = Omega.shape | |
74 D = numpy.linalg.pinv(Omega) | |
75 U,S,Vt = numpy.linalg.svd(D) | |
76 Aextra = Vt[-(N-n):,:] | |
77 | |
78 # Create aggregate problem | |
79 Atilde = numpy.vstack((numpy.dot(M,D), Aextra)) | |
80 ytilde = numpy.concatenate((y,numpy.zeros(N-n))) | |
81 | |
82 return numpy.dot(D, pyCSalgos.RecomTST.RecommendedTST.RecommendedTST(Atilde, ytilde, nsweep, tol, xinitial, ro)) | |
83 |