##// END OF EJS Templates
Fixed erros in sfb, idualtree, irls_dn, and irls_dn2
yamaro -
r20:21
parent child
Show More
@@ -1,471 +1,471
1 #!/usr/bin/env python No newline at end of file
1 #!/usr/bin/env python
2 No newline at end of file
2
3 #---------------------------------------------------------- No newline at end of file
3 #----------------------------------------------------------
4 # Original MATLAB code developed by Brian Harding No newline at end of file
4 # Original MATLAB code developed by Brian Harding
5 # Rewritten in python by Yolian Amaro No newline at end of file
5 # Rewritten in python by Yolian Amaro
6 # Python version 2.7 No newline at end of file
6 # Python version 2.7
7 # May 15, 2014 No newline at end of file
7 # May 15, 2014
8 # Jicamarca Radio Observatory No newline at end of file
8 # Jicamarca Radio Observatory
9 #---------------------------------------------------------- No newline at end of file
9 #----------------------------------------------------------
10 No newline at end of file
10
11 import math No newline at end of file
11 import math
12 import numpy as np No newline at end of file
12 import numpy as np
13 import matplotlib.pyplot as plt No newline at end of file
13 import matplotlib.pyplot as plt
14 from scipy import linalg No newline at end of file
14 from scipy import linalg
15 import time No newline at end of file
15 import time
16 from y_hysell96 import* No newline at end of file
16 from y_hysell96 import*
17 from deb4_basis import * No newline at end of file
17 from deb4_basis import *
18 from modelf import * No newline at end of file
18 from modelf import *
19 #from scipy.optimize import fsolve No newline at end of file
19 #from scipy.optimize import fsolve
20 from scipy.optimize import root No newline at end of file
20 from scipy.optimize import root
21 import pywt No newline at end of file
21 import pywt
22 from irls_dn2 import * No newline at end of file
22 from irls_dn2 import *
23 No newline at end of file
23
24 No newline at end of file
24
25 ## Calculate Forward Model No newline at end of file
25 ## Calculate Forward Model
26 lambda1 = 6.0 No newline at end of file
26 lambda1 = 6.0
27 k = 2*math.pi/lambda1 No newline at end of file
27 k = 2*math.pi/lambda1
28 No newline at end of file
28
29 ## Calculate Magnetic Declination No newline at end of file
29 ## Calculate Magnetic Declination
30 No newline at end of file
30
31 # [~,~,dec] = igrf11magm(350e3, -11-56/60, -76-52/60, 2012); check this No newline at end of file
31 # [~,~,dec] = igrf11magm(350e3, -11-56/60, -76-52/60, 2012); check this
32 No newline at end of file
32
33 # or calculate it with the above function No newline at end of file
33 # or calculate it with the above function
34 dec = -1.24 No newline at end of file
34 dec = -1.24
35 No newline at end of file
35
36 # loads rx, ry (Jicamarca antenna positions) #this can be done with numpy.loadtxt() No newline at end of file
36 # loads rx, ry (Jicamarca antenna positions) #this can be done with numpy.loadtxt()
37 rx = np.array( [[127.5000], [91.5000], [127.5000], [19.5000], [91.5000], [-127.5000], [-55.5000], [-220.8240]] ) No newline at end of file
37 rx = np.array( [[127.5000], [91.5000], [127.5000], [19.5000], [91.5000], [-127.5000], [-55.5000], [-220.8240]] )
38 ry = np.array( [[127.5000], [91.5000], [91.5000], [55.5000], [-19.5000], [-127.5000], [-127.5000], [-322.2940]] ) No newline at end of file
38 ry = np.array( [[127.5000], [91.5000], [91.5000], [55.5000], [-19.5000], [-127.5000], [-127.5000], [-322.2940]] )
39 No newline at end of file
39
40 antpos = np.array( [[127.5000, 91.5000, 127.5000, 19.5000, 91.5000, -127.5000, -55.5000, -220.8240], No newline at end of file
40 antpos = np.array( [[127.5000, 91.5000, 127.5000, 19.5000, 91.5000, -127.5000, -55.5000, -220.8240],
41 [127.5000, 91.5000, 91.5000, 55.5000, -19.5000, -127.5000, -127.5000, -322.2940]] ) No newline at end of file
41 [127.5000, 91.5000, 91.5000, 55.5000, -19.5000, -127.5000, -127.5000, -322.2940]] )
42 No newline at end of file
42
43 plt.figure(1) No newline at end of file
43 plt.figure(1)
44 plt.plot(rx, ry, 'ro') No newline at end of file
44 plt.plot(rx, ry, 'ro')
45 plt.draw() No newline at end of file
45 plt.draw()
46 No newline at end of file
46
47 # Jicamarca is nominally at a 45 degree angle No newline at end of file
47 # Jicamarca is nominally at a 45 degree angle
48 theta = 45 - dec; No newline at end of file
48 theta = 45 - dec;
49 No newline at end of file
49
50 # Rotation matrix from antenna coord to magnetic coord (East North) No newline at end of file
50 # Rotation matrix from antenna coord to magnetic coord (East North)
51 theta_rad = math.radians(theta) # trig functions take radians as argument No newline at end of file
51 theta_rad = math.radians(theta) # trig functions take radians as argument
52 val1 = float( math.cos(theta_rad) ) No newline at end of file
52 val1 = float( math.cos(theta_rad) )
53 val2 = float( math.sin(theta_rad) ) No newline at end of file
53 val2 = float( math.sin(theta_rad) )
54 val3 = float( -1*math.sin(theta_rad)) No newline at end of file
54 val3 = float( -1*math.sin(theta_rad))
55 val4 = float( math.cos(theta_rad) ) No newline at end of file
55 val4 = float( math.cos(theta_rad) )
56 No newline at end of file
56
57 # Rotation matrix from antenna coord to magnetic coord (East North) No newline at end of file
57 # Rotation matrix from antenna coord to magnetic coord (East North)
58 R = np.array( [[val1, val3], [val2, val4]] ); No newline at end of file
58 R = np.array( [[val1, val3], [val2, val4]] );
59 No newline at end of file
59
60 # Rotate antenna positions to magnetic coord. No newline at end of file
60 # Rotate antenna positions to magnetic coord.
61 AR = np.dot(R.T, antpos); No newline at end of file
61 AR = np.dot(R.T, antpos);
62 No newline at end of file
62
63 # Only take the East component No newline at end of file
63 # Only take the East component
64 r = AR[0,:] No newline at end of file
64 r = AR[0,:]
65 r.sort() # ROW VECTOR? No newline at end of file
65 r.sort() # ROW VECTOR?
66 No newline at end of file
66
67 # Truth model (high and low resolution) No newline at end of file
67 # Truth model (high and low resolution)
68 Nt = (1024.0)*(16.0); # number of pixels in truth image: high resolution No newline at end of file
68 Nt = (1024.0)*(16.0); # number of pixels in truth image: high resolution
69 thbound = 9.0/180*math.pi; # the width of the domain in angle space No newline at end of file
69 thbound = 9.0/180*math.pi; # the width of the domain in angle space
70 thetat = np.linspace(-thbound, thbound,Nt) # image domain No newline at end of file
70 thetat = np.linspace(-thbound, thbound,Nt) # image domain
71 thetat = np.transpose(thetat) # transpose # FUNCIONA?????????????????????????????? No newline at end of file
71 thetat = np.transpose(thetat) # transpose # FUNCIONA??????????????????????????????
72 Nr = (256.0); # number of pixels in reconstructed image: low res No newline at end of file
72 Nr = (256.0); # number of pixels in reconstructed image: low res
73 thetar = np.linspace(-thbound, thbound,Nr) # reconstruction domain No newline at end of file
73 thetar = np.linspace(-thbound, thbound,Nr) # reconstruction domain
74 thetar = np.transpose(thetar) #transpose # FUNCIONA????????????????????????????? No newline at end of file
74 thetar = np.transpose(thetar) #transpose # FUNCIONA?????????????????????????????
75 No newline at end of file
75
76 # Model for f: Gaussian(s) with amplitudes a, centers mu, widths sig, and No newline at end of file
76 # Model for f: Gaussian(s) with amplitudes a, centers mu, widths sig, and
77 # background constant b. No newline at end of file
77 # background constant b.
78 No newline at end of file
78
79 # Triple Gaussian No newline at end of file
79 # Triple Gaussian
80 # a = np.array([3, 5, 2]); No newline at end of file
80 # a = np.array([3, 5, 2]);
81 # mu = np.array([-5.0/180*math.pi, 2.0/180*math.pi, 7.0/180*math.pi]); No newline at end of file
81 # mu = np.array([-5.0/180*math.pi, 2.0/180*math.pi, 7.0/180*math.pi]);
82 # sig = np.array([2.0/180*math.pi, 1.5/180*math.pi, 0.3/180*math.pi]); No newline at end of file
82 # sig = np.array([2.0/180*math.pi, 1.5/180*math.pi, 0.3/180*math.pi]);
83 # b = 0; # background No newline at end of file
83 # b = 0; # background
84 No newline at end of file
84
85 # Double Gaussian No newline at end of file
85 # Double Gaussian
86 # a = np.array([3, 5]); No newline at end of file
86 # a = np.array([3, 5]);
87 # mu = np.array([-5.0/180*math.pi, 2.0/180*math.pi]); No newline at end of file
87 # mu = np.array([-5.0/180*math.pi, 2.0/180*math.pi]);
88 # sig = np.array([2.0/180*math.pi, 1.5/180*math.pi]); No newline at end of file
88 # sig = np.array([2.0/180*math.pi, 1.5/180*math.pi]);
89 # b = 0; # background No newline at end of file
89 # b = 0; # background
90 No newline at end of file
90
91 # Single Gaussian No newline at end of file
91 # Single Gaussian
92 a = np.array( [3] ); No newline at end of file
92 a = np.array( [3] );
93 mu = np.array( [-3.0/180*math.pi] ) No newline at end of file
93 mu = np.array( [-3.0/180*math.pi] )
94 sig = np.array( [2.0/180*math.pi] ) No newline at end of file
94 sig = np.array( [2.0/180*math.pi] )
95 b = 0; No newline at end of file
95 b = 0;
96 No newline at end of file
96
97 fact = np.zeros(shape=(Nt,1)); No newline at end of file
97 fact = np.zeros(shape=(Nt,1));
98 factr = np.zeros(shape=(Nr,1)); No newline at end of file
98 factr = np.zeros(shape=(Nr,1));
99 No newline at end of file
99
100 for i in range(0, a.size): No newline at end of file
100 for i in range(0, a.size):
101 temp = (-(thetat-mu[i])**2/(sig[i]**2)) No newline at end of file
101 temp = (-(thetat-mu[i])**2/(sig[i]**2))
102 tempr = (-(thetar-mu[i])**2/(sig[i]**2)) No newline at end of file
102 tempr = (-(thetar-mu[i])**2/(sig[i]**2))
103 for j in range(0, temp.size): No newline at end of file
103 for j in range(0, temp.size):
104 fact[j] = fact[j] + a[i]*math.exp(temp[j]); No newline at end of file
104 fact[j] = fact[j] + a[i]*math.exp(temp[j]);
105 for m in range(0, tempr.size): No newline at end of file
105 for m in range(0, tempr.size):
106 factr[m] = factr[m] + a[i]*math.exp(tempr[m]); No newline at end of file
106 factr[m] = factr[m] + a[i]*math.exp(tempr[m]);
107 fact = fact + b; No newline at end of file
107 fact = fact + b;
108 factr = factr + b; No newline at end of file
108 factr = factr + b;
109 No newline at end of file
109
110 # # model for f: Square pulse No newline at end of file
110 # # model for f: Square pulse
111 # for j in range(0, fact.size): No newline at end of file
111 # for j in range(0, fact.size):
112 # if (theta > -5.0/180*math.pi and theta < 2.0/180*math.pi): No newline at end of file
112 # if (theta > -5.0/180*math.pi and theta < 2.0/180*math.pi):
113 # fact[j] = 0 No newline at end of file
113 # fact[j] = 0
114 # else: No newline at end of file
114 # else:
115 # fact[j] = 1 No newline at end of file
115 # fact[j] = 1
116 # for k in range(0, factr.size): No newline at end of file
116 # for k in range(0, factr.size):
117 # if (thetar[k] > -5.0/180*math.pi and thetar[k] < 2/180*math.pi): No newline at end of file
117 # if (thetar[k] > -5.0/180*math.pi and thetar[k] < 2/180*math.pi):
118 # fact[k] = 0 No newline at end of file
118 # fact[k] = 0
119 # else: No newline at end of file
119 # else:
120 # fact[k] = 1 No newline at end of file
120 # fact[k] = 1
121 # No newline at end of file
121 #
122 # No newline at end of file
122 #
123 # # model for f: triangle pulse No newline at end of file
123 # # model for f: triangle pulse
124 # mu = -1.0/180*math.pi; No newline at end of file
124 # mu = -1.0/180*math.pi;
125 # sig = 5.0/180*math.pi; No newline at end of file
125 # sig = 5.0/180*math.pi;
126 # wind1 = theta > mu-sig and theta < mu; No newline at end of file
126 # wind1 = theta > mu-sig and theta < mu;
127 # wind2 = theta < mu+sig and theta > mu; No newline at end of file
127 # wind2 = theta < mu+sig and theta > mu;
128 # fact = wind1 * (theta - (mu - sig)); No newline at end of file
128 # fact = wind1 * (theta - (mu - sig));
129 # factr = wind1 * (thetar - (mu - sig)); No newline at end of file
129 # factr = wind1 * (thetar - (mu - sig));
130 # fact = fact + wind2 * (-(theta-(mu+sig))); No newline at end of file
130 # fact = fact + wind2 * (-(theta-(mu+sig)));
131 # factr = factr + wind2 * (-(thetar-(mu+sig))); No newline at end of file
131 # factr = factr + wind2 * (-(thetar-(mu+sig)));
132 No newline at end of file
132
133 No newline at end of file
133
134 # fact = fact/(sum(fact)[0]*2*thbound/Nt); # normalize to integral(f)==1 No newline at end of file
134 # fact = fact/(sum(fact)[0]*2*thbound/Nt); # normalize to integral(f)==1
135 I = sum(fact)[0]; No newline at end of file
135 I = sum(fact)[0];
136 fact = fact/I; # normalize to sum(f)==1 No newline at end of file
136 fact = fact/I; # normalize to sum(f)==1
137 factr = factr/I; # normalize to sum(f)==1 No newline at end of file
137 factr = factr/I; # normalize to sum(f)==1
138 #plt.figure() No newline at end of file
138 #plt.figure()
139 #plt.plot(thetat,fact,'r'); No newline at end of file
139 #plt.plot(thetat,fact,'r');
140 #plt.plot(thetar,factr,'k.'); No newline at end of file
140 #plt.plot(thetar,factr,'k.');
141 #xlim([min(thetat) max(thetat)]); No newline at end of file
141 #xlim([min(thetat) max(thetat)]);
142 No newline at end of file
142
143 #x = np.linspace(thetat.min(), thetat.max) ???? No newline at end of file
143 #x = np.linspace(thetat.min(), thetat.max) ????
144 #for i in range(0, thetat.size): No newline at end of file
144 #for i in range(0, thetat.size):
145 plt.figure(2) No newline at end of file
145 plt.figure(2)
146 plt.plot(thetat, fact, 'r--') No newline at end of file
146 plt.plot(thetat, fact, 'r--')
147 plt.plot(thetar, factr, 'ro') No newline at end of file
147 plt.plot(thetar, factr, 'ro')
148 plt.draw() No newline at end of file
148 plt.draw()
149 # xlim([min(thetat) max(thetat)]); FALTA ARREGLAR ESTO No newline at end of file
149 # xlim([min(thetat) max(thetat)]); FALTA ARREGLAR ESTO
150 No newline at end of file
150
151 No newline at end of file
151
152 ## No newline at end of file
152 ##
153 # Control the type and number of inversions with: No newline at end of file
153 # Control the type and number of inversions with:
154 # SNRdBvec: the SNRs that will be used. No newline at end of file
154 # SNRdBvec: the SNRs that will be used.
155 # NN: the number of trials for each SNR No newline at end of file
155 # NN: the number of trials for each SNR
156 No newline at end of file
156
157 #SNRdBvec = np.linspace(5,20,10); No newline at end of file
157 #SNRdBvec = np.linspace(5,20,10);
158 SNRdBvec = np.array([15]); No newline at end of file
158 SNRdBvec = np.array([15]);
159 NN = 1; # number of trial at each SNR No newline at end of file
159 NN = 1; # number of trial at each SNR
160 No newline at end of file
160
161 # if using vector arguments should be: (4,SNRdBvec.size,NN) No newline at end of file
161 # if using vector arguments should be: (4,SNRdBvec.size,NN)
162 corr = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial) No newline at end of file
162 corr = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial)
163 corrc = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial) No newline at end of file
163 corrc = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial)
164 rmse = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial) No newline at end of file
164 rmse = np.zeros(shape=(4,SNRdBvec.size,NN)); # (method, SNR, trial)
165 No newline at end of file
165
166 for snri in range(0, SNRdBvec.size): # change 1 for SNRdBvec.size when using SNRdBvec as vector No newline at end of file
166 for snri in range(0, SNRdBvec.size): # change 1 for SNRdBvec.size when using SNRdBvec as vector
167 for Ni in range(0, NN): No newline at end of file
167 for Ni in range(0, NN):
168 SNRdB = SNRdBvec[snri]; No newline at end of file
168 SNRdB = SNRdBvec[snri];
169 SNR = 10**(SNRdB/10.0); No newline at end of file
169 SNR = 10**(SNRdB/10.0);
170 No newline at end of file
170
171 # Calculate cross-correlation matrix (Fourier components of image) No newline at end of file
171 # Calculate cross-correlation matrix (Fourier components of image)
172 # This is an inefficient way to do this. No newline at end of file
172 # This is an inefficient way to do this.
173 R = np.zeros(shape=(r.size, r.size), dtype=object); No newline at end of file
173 R = np.zeros(shape=(r.size, r.size), dtype=object);
174 No newline at end of file
174
175 for i1 in range(0, r.size): No newline at end of file
175 for i1 in range(0, r.size):
176 for i2 in range(0,r.size): No newline at end of file
176 for i2 in range(0,r.size):
177 R[i1,i2] = np.dot(fact.T, np.exp(1j*k*np.dot((r[i1]-r[i2]),np.sin(thetat)))) No newline at end of file
177 R[i1,i2] = np.dot(fact.T, np.exp(1j*k*np.dot((r[i1]-r[i2]),np.sin(thetat))))
178 R[i1,i2] = sum(R[i1,i2]) No newline at end of file
178 R[i1,i2] = sum(R[i1,i2])
179 No newline at end of file
179
180 # Add uncertainty No newline at end of file
180 # Add uncertainty
181 # This is an ad-hoc way of adding "noise". It models some combination of No newline at end of file
181 # This is an ad-hoc way of adding "noise". It models some combination of
182 # receiver noise and finite integration times. We could use a more No newline at end of file
182 # receiver noise and finite integration times. We could use a more
183 # advanced model (like in Yu et al 2000) in the future. No newline at end of file
183 # advanced model (like in Yu et al 2000) in the future.
184 No newline at end of file
184
185 # This is a way of adding noise while maintaining the No newline at end of file
185 # This is a way of adding noise while maintaining the
186 # positive-semi-definiteness of the matrix. No newline at end of file
186 # positive-semi-definiteness of the matrix.
187 No newline at end of file
187
188 U = linalg.cholesky(R.astype(complex), lower=False); # U'*U = R No newline at end of file
188 U = linalg.cholesky(R.astype(complex), lower=False); # U'*U = R
189 No newline at end of file
189
190 sigma_noise = (np.linalg.norm(U,'fro')/SNR); No newline at end of file
190 sigma_noise = (np.linalg.norm(U,'fro')/SNR);
191 No newline at end of file
191
192 temp1 = (-1*np.random.rand(U.shape[0], U.shape[1]) + 0.5) No newline at end of file
192 temp1 = (-1*np.random.rand(U.shape[0], U.shape[1]) + 0.5)
193 temp2 = 1j*(-1*np.random.rand(U.shape[0], U.shape[1]) + 0.5) No newline at end of file
193 temp2 = 1j*(-1*np.random.rand(U.shape[0], U.shape[1]) + 0.5)
194 temp3 = ((abs(U) > 0).astype(float)) # upper triangle of 1's No newline at end of file
194 temp3 = ((abs(U) > 0).astype(float)) # upper triangle of 1's
195 temp4 = (sigma_noise * (temp1 + temp2))/np.sqrt(2.0) No newline at end of file
195 temp4 = (sigma_noise * (temp1 + temp2))/np.sqrt(2.0)
196 No newline at end of file
196
197 nz = np.multiply(temp4, temp3) No newline at end of file
197 nz = np.multiply(temp4, temp3)
198 No newline at end of file
198
199 #---------------------- Eliminar esto:------------------------------------------ No newline at end of file
199 #---------------------- Eliminar esto:------------------------------------------
200 #nz = ((abs(np.multiply(temp4, temp3)) > 0).astype(int)) No newline at end of file
200 #nz = ((abs(np.multiply(temp4, temp3)) > 0).astype(int))
201 #nz = ((abs(np.dot(temp4, temp3)) > 0).astype(int)) No newline at end of file
201 #nz = ((abs(np.dot(temp4, temp3)) > 0).astype(int))
202 #nz = np.dot(np.dot(sigma_noise, (temp1 + temp2)/math.sqrt(2), temp3 )); No newline at end of file
202 #nz = np.dot(np.dot(sigma_noise, (temp1 + temp2)/math.sqrt(2), temp3 ));
203 #nz = np.dot(sigma_noise, (np.dot((np.random.rand(8,8) + j*np.random.rand(8,8))/math.sqrt(2.0) , (abs(U) > 0).astype(int)))); No newline at end of file
203 #nz = np.dot(sigma_noise, (np.dot((np.random.rand(8,8) + j*np.random.rand(8,8))/math.sqrt(2.0) , (abs(U) > 0).astype(int))));
204 #-------------------------------------------------------------------------------- No newline at end of file
204 #--------------------------------------------------------------------------------
205 No newline at end of file
205
206 Unz = U + nz; No newline at end of file
206 Unz = U + nz;
207 Rnz = np.dot(Unz.T.conj(),Unz); # the noisy version of R No newline at end of file
207 Rnz = np.dot(Unz.T.conj(),Unz); # the noisy version of R
208 plt.figure(3); No newline at end of file
208 plt.figure(3);
209 plt.pcolor(abs(Rnz)); No newline at end of file
209 plt.pcolor(abs(Rnz));
210 plt.colorbar(); No newline at end of file
210 plt.colorbar();
211 No newline at end of file
211
212 # Fourier Inversion ################### No newline at end of file
212 # Fourier Inversion ###################
213 f_fourier = np.zeros(shape=(Nr,1), dtype=complex); No newline at end of file
213 f_fourier = np.zeros(shape=(Nr,1), dtype=complex);
214 No newline at end of file
214
215 for i in range(0, thetar.size): No newline at end of file
215 for i in range(0, thetar.size):
216 th = thetar[i]; No newline at end of file
216 th = thetar[i];
217 w = np.exp(1j*k*np.dot(r,np.sin(th))); No newline at end of file
217 w = np.exp(1j*k*np.dot(r,np.sin(th)));
218 No newline at end of file
218
219 temp = np.dot(w.T.conj(),U) No newline at end of file
219 temp = np.dot(w.T.conj(),U)
220 No newline at end of file
220
221 f_fourier[i] = np.dot(temp, w); No newline at end of file
221 f_fourier[i] = np.dot(temp, w);
222 No newline at end of file
222
223 f_fourier = f_fourier.real; # get rid of numerical imaginary noise No newline at end of file
223 f_fourier = f_fourier.real; # get rid of numerical imaginary noise
224 No newline at end of file
224
225 #print f_fourier No newline at end of file
225 #print f_fourier
226 No newline at end of file
226
227 No newline at end of file
227
228 # Capon Inversion ###################### No newline at end of file
228 # Capon Inversion ######################
229 No newline at end of file
229
230 f_capon = np.zeros(shape=(Nr,1)); No newline at end of file
230 f_capon = np.zeros(shape=(Nr,1));
231 No newline at end of file
231
232 tic_capon = time.time(); No newline at end of file
232 tic_capon = time.time();
233 No newline at end of file
233
234 for i in range(0, thetar.size): No newline at end of file
234 for i in range(0, thetar.size):
235 th = thetar[i]; No newline at end of file
235 th = thetar[i];
236 w = np.exp(1j*k*np.dot(r,np.sin(th))); No newline at end of file
236 w = np.exp(1j*k*np.dot(r,np.sin(th)));
237 f_capon[i] = np.divide(1, ( np.dot( w.T.conj(), (linalg.solve(Rnz,w)) ) ).real) No newline at end of file
237 f_capon[i] = np.divide(1, ( np.dot( w.T.conj(), (linalg.solve(Rnz,w)) ) ).real)
238 No newline at end of file
238
239 No newline at end of file
239
240 toc_capon = time.time() No newline at end of file
240 toc_capon = time.time()
241 No newline at end of file
241
242 elapsed_time_capon = toc_capon - tic_capon; No newline at end of file
242 elapsed_time_capon = toc_capon - tic_capon;
243 No newline at end of file
243
244 f_capon = f_capon.real; # get rid of numerical imaginary noise No newline at end of file
244 f_capon = f_capon.real; # get rid of numerical imaginary noise
245 No newline at end of file
245
246 # MaxEnt Inversion ##################### No newline at end of file
246 # MaxEnt Inversion #####################
247 No newline at end of file
247
248 # create the appropriate sensing matrix (split into real and imaginary # parts) No newline at end of file
248 # create the appropriate sensing matrix (split into real and imaginary # parts)
249 M = (r.size-1)*(r.size); No newline at end of file
249 M = (r.size-1)*(r.size);
250 Ht = np.zeros(shape=(M,Nt)); # "true" sensing matrix No newline at end of file
250 Ht = np.zeros(shape=(M,Nt)); # "true" sensing matrix
251 Hr = np.zeros(shape=(M,Nr)); # approximate sensing matrix for reconstruction No newline at end of file
251 Hr = np.zeros(shape=(M,Nr)); # approximate sensing matrix for reconstruction
252 No newline at end of file
252
253 # need to re-index our measurements from matrix R into vector g No newline at end of file
253 # need to re-index our measurements from matrix R into vector g
254 g = np.zeros(shape=(M,1)); No newline at end of file
254 g = np.zeros(shape=(M,1));
255 gnz = np.zeros(shape=(M,1)); # noisy version of g No newline at end of file
255 gnz = np.zeros(shape=(M,1)); # noisy version of g
256 No newline at end of file
256
257 # triangular indexing to perform this re-indexing No newline at end of file
257 # triangular indexing to perform this re-indexing
258 T = np.ones(shape=(r.size,r.size)); No newline at end of file
258 T = np.ones(shape=(r.size,r.size));
259 [i1v,i2v] = np.where(np.triu(T,1) > 0); # converts linear to triangular indexing No newline at end of file
259 [i1v,i2v] = np.where(np.triu(T,1) > 0); # converts linear to triangular indexing
260 No newline at end of file
260
261 # build H No newline at end of file
261 # build H
262 for i1 in range(0, r.size): No newline at end of file
262 for i1 in range(0, r.size):
263 for i2 in range(i1+1, r.size): No newline at end of file
263 for i2 in range(i1+1, r.size):
264 idx = np.where(np.logical_and((i1==i1v), (i2==i2v)))[0]; # kind of awkward No newline at end of file
264 idx = np.where(np.logical_and((i1==i1v), (i2==i2v)))[0]; # kind of awkward
265 idx1 = 2*idx; # because index starts at 0 No newline at end of file
265 idx1 = 2*idx; # because index starts at 0
266 idx2 = 2*idx+1; No newline at end of file
266 idx2 = 2*idx+1;
267 Hr[idx1,:] = np.cos(k*(r[i1]-r[i2])*np.sin(thetar)).T; No newline at end of file
267 Hr[idx1,:] = np.cos(k*(r[i1]-r[i2])*np.sin(thetar)).T;
268 Hr[idx2,:] = np.sin(k*(r[i1]-r[i2])*np.sin(thetar)).T; No newline at end of file
268 Hr[idx2,:] = np.sin(k*(r[i1]-r[i2])*np.sin(thetar)).T;
269 Ht[idx1,:] = np.cos(k*(r[i1]-r[i2])*np.sin(thetat)).T*Nr/Nt; No newline at end of file
269 Ht[idx1,:] = np.cos(k*(r[i1]-r[i2])*np.sin(thetat)).T*Nr/Nt;
270 Ht[idx2,:] = np.sin(k*(r[i1]-r[i2])*np.sin(thetat)).T*Nr/Nt; No newline at end of file
270 Ht[idx2,:] = np.sin(k*(r[i1]-r[i2])*np.sin(thetat)).T*Nr/Nt;
271 g[idx1] = (R[i1,i2]).real*Nr/Nt; # check this again later No newline at end of file
271 g[idx1] = (R[i1,i2]).real*Nr/Nt; # check this again later
272 g[idx2] = (R[i1,i2]).imag*Nr/Nt; # check again No newline at end of file
272 g[idx2] = (R[i1,i2]).imag*Nr/Nt; # check again
273 gnz[idx1] = (Rnz[i1,i2]).real*Nr/Nt; No newline at end of file
273 gnz[idx1] = (Rnz[i1,i2]).real*Nr/Nt;
274 gnz[idx2] = (Rnz[i1,i2]).imag*Nr/Nt; No newline at end of file
274 gnz[idx2] = (Rnz[i1,i2]).imag*Nr/Nt;
275 No newline at end of file
275
276 # inversion No newline at end of file
276 # inversion
277 F = Nr/Nt; # normalization No newline at end of file
277 F = Nr/Nt; # normalization
278 sigma = 1; # set to 1 because the difference is accounted for in G No newline at end of file
278 sigma = 1; # set to 1 because the difference is accounted for in G
279 No newline at end of file
279
280 ##### ADD *10 for consistency with old model, NEED TO VERIFY THIS!!!!? line below No newline at end of file
280 ##### ADD *10 for consistency with old model, NEED TO VERIFY THIS!!!!? line below
281 G = np.linalg.norm(g-gnz)**2 ; # pretend we know in advance the actual value of chi^2 No newline at end of file
281 G = np.linalg.norm(g-gnz)**2 ; # pretend we know in advance the actual value of chi^2
282 No newline at end of file
282
283 tic_maxent = time.time(); No newline at end of file
283 tic_maxent = time.time();
284 No newline at end of file
284
285 lambda0 = 1e-5*np.ones(shape=(M,1)); # initial condition (can be set to anything) No newline at end of file
285 lambda0 = 1e-5*np.ones(shape=(M,1)); # initial condition (can be set to anything)
286 No newline at end of file
286
287 toc_maxent = time.time() No newline at end of file
287 toc_maxent = time.time()
288 elapsed_time_maxent = toc_maxent - tic_maxent; No newline at end of file
288 elapsed_time_maxent = toc_maxent - tic_maxent;
289 No newline at end of file
289
290 # Whitened solution No newline at end of file
290 # Whitened solution
291 def myfun(lambda1): No newline at end of file
291 def myfun(lambda1):
292 return y_hysell96(lambda1,gnz,sigma,F,G,Hr); No newline at end of file
292 return y_hysell96(lambda1,gnz,sigma,F,G,Hr);
293 No newline at end of file
293
294 tic_maxEnt = time.time(); No newline at end of file
294 tic_maxEnt = time.time();
295 No newline at end of file
295
296 #sol1 = fsolve(myfun,lambda0.ravel(), args=(), xtol=1e-14, maxfev=100000); No newline at end of file
296 #sol1 = fsolve(myfun,lambda0.ravel(), args=(), xtol=1e-14, maxfev=100000);
297 lambda1 = root(myfun,lambda0, method='krylov', tol=1e-14); No newline at end of file
297 lambda1 = root(myfun,lambda0, method='krylov', tol=1e-14);
298 No newline at end of file
298
299 #print lambda1 No newline at end of file
299 #print lambda1
300 #print lambda1.x No newline at end of file
300 #print lambda1.x
301 No newline at end of file
301
302 lambda1 = lambda1.x; No newline at end of file
302 lambda1 = lambda1.x;
303 No newline at end of file
303
304 toc_maxEnt = time.time(); No newline at end of file
304 toc_maxEnt = time.time();
305 f_maxent = modelf(lambda1, Hr, F); No newline at end of file
305 f_maxent = modelf(lambda1, Hr, F);
306 ystar = myfun(lambda1); No newline at end of file
306 ystar = myfun(lambda1);
307 Lambda = np.sqrt(sum(lambda1**2.*sigma**2)/(4*G)); No newline at end of file
307 Lambda = np.sqrt(sum(lambda1**2.*sigma**2)/(4*G));
308 ep = np.multiply(-lambda1,sigma**2)/ (2*Lambda); No newline at end of file
308 ep = np.multiply(-lambda1,sigma**2)/ (2*Lambda);
309 es = np.dot(Hr, f_maxent) - gnz; # should be same as ep No newline at end of file
309 es = np.dot(Hr, f_maxent) - gnz; # should be same as ep
310 chi2 = np.sum((es/sigma)**2); No newline at end of file
310 chi2 = np.sum((es/sigma)**2);
311 No newline at end of file
311
312
312
No newline at end of file
313 # --------- CS inversion using Iteratively Reweighted Least Squares (IRLS) ------------- No newline at end of file
313 # CS inversion using Iteratively Reweighted Least Squares (IRLS)------------- No newline at end of file
314 No newline at end of file
314
315 # (Use Nr, thetar, gnz, and Hr from MaxEnt above) No newline at end of file
315 # (Use Nr, thetar, gnz, and Hr from MaxEnt above)
316
316
No newline at end of file
317 Psi = deb4_basis(Nr);
317 Psi = deb4_basis(Nr); ###### REPLACED BY LINEs BELOW (?)
No newline at end of file
No newline at end of file
318
318
No newline at end of file
No newline at end of file
319 # REMOVE THIS-------------------------------- No newline at end of file
319 print 'FINALLY!'
No newline at end of file
320 print Psi.shape
No newline at end of file
321
No newline at end of file
322 # REMOVE THIS?-------------------------------- No newline at end of file
323 #wavelet1 = pywt.Wavelet('db4') No newline at end of file
320 #wavelet1 = pywt.Wavelet('db4')
324 #Phi, Psi, x = wavelet1.wavefun(level=3) No newline at end of file
321 #Phi, Psi, x = wavelet1.wavefun(level=3)
325 # -------------------------------------------- No newline at end of file
322 # --------------------------------------------
326 No newline at end of file
323
327 # add "sum to 1" constraint
324 # add "sum to 1" constraint
No newline at end of file
325 H2 = np.concatenate( (Hr, np.ones(shape=(1,Nr))), axis=0 );
328 # H2 = np.concatenate( (Hr, np.ones(shape=(1,Nr))), axis=0 );
No newline at end of file
No newline at end of file
326 N_temp = np.array([[Nr/Nt]]);
329 # N_temp = np.array([[Nr/Nt]]);
No newline at end of file
No newline at end of file
327 g2 = np.concatenate( (gnz, N_temp), axis=0 );
330 # g2 = np.concatenate( (gnz, N_temp), axis=0 );
No newline at end of file
No newline at end of file
328
331 # H2 = H2.T.conj();
No newline at end of file
No newline at end of file
329 #H2 = H2.T.conj();
332 #
No newline at end of file
No newline at end of file
330
333 # print 'H2 shape', H2.shape
No newline at end of file
No newline at end of file
331 #Psi = Psi.T.conj(); # to align matrices
334 # print 'Psi shape', Psi.shape
No newline at end of file
No newline at end of file
332
335 #
No newline at end of file
No newline at end of file
333 ####print 'H2 shape', H2.shape
336 # s = irls_dn2(np.dot(H2,Psi),g2,0.5,G); No newline at end of file
No newline at end of file
334 #####print 'Psi shape', Psi.shape
No newline at end of file
335
No newline at end of file
336 A = np.dot(H2,Psi);
No newline at end of file
337
No newline at end of file
338 s = irls_dn2(np.dot(H2,Psi),g2,0.5,G); No newline at end of file
337 # f_cs = Psi*s; No newline at end of file
339 # f_cs = Psi*s;
338 # No newline at end of file
340 #
339 # # plot No newline at end of file
341 # # plot
340 # plot(thetar,f_cs,'r.-'); No newline at end of file
342 # plot(thetar,f_cs,'r.-');
341 # hold on; No newline at end of file
343 # hold on;
342 # plot(thetat,fact,'k-'); No newline at end of file
344 # plot(thetat,fact,'k-');
343 # hold off; No newline at end of file
345 # hold off;
344 No newline at end of file
346
345 No newline at end of file
347
346 # # # Scaling and shifting No newline at end of file
348 # # # Scaling and shifting
347 # # # Only necessary for capon solution No newline at end of file
349 # # # Only necessary for capon solution
348 No newline at end of file
350 f_capon = f_capon/np.max(f_capon)*np.max(fact);
349 No newline at end of file
351
350 f_capon = f_capon/np.max(f_capon)*np.max(fact); No newline at end of file
352
351 No newline at end of file
353 ### analyze stuff ######################
352 No newline at end of file
354 # calculate MSE
353 ### analyze stuff ###################### No newline at end of file
355 rmse_fourier = np.sqrt(np.mean((f_fourier - factr)**2));
354 # calculate MSE No newline at end of file
356 rmse_capon = np.sqrt(np.mean((f_capon - factr)**2));
355 rmse_fourier = np.sqrt(np.mean((f_fourier - factr)**2)); No newline at end of file
357 rmse_maxent = np.sqrt(np.mean((f_maxent - factr)**2));
356 rmse_capon = np.sqrt(np.mean((f_capon - factr)**2)); No newline at end of file
358 #rmse_cs = np.sqrt(np.mean((f_cs - factr).^2));
357 rmse_maxent = np.sqrt(np.mean((f_maxent - factr)**2)); No newline at end of file
359
358 #rmse_cs = np.sqrt(np.mean((f_cs - factr).^2)); No newline at end of file
360
359 No newline at end of file
361 relrmse_fourier = rmse_fourier / np.linalg.norm(fact);
360 No newline at end of file
362 relrmse_capon = rmse_capon / np.linalg.norm(fact);
361 relrmse_fourier = rmse_fourier / np.linalg.norm(fact); No newline at end of file
363 relrmse_maxent = rmse_maxent / np.linalg.norm(fact);
362 relrmse_capon = rmse_capon / np.linalg.norm(fact); No newline at end of file
364 #relrmse_cs = rmse_cs / np.norm(fact);
363 relrmse_maxent = rmse_maxent / np.linalg.norm(fact); No newline at end of file
365
364 #relrmse_cs = rmse_cs / np.norm(fact); No newline at end of file
366 # To be able to perform dot product (align matrices) done below within the dot calculations
365 No newline at end of file
367
366 # To be able to perform dot product (align matrices) done below within the dot calculations No newline at end of file
368
367 No newline at end of file
369 #f_fourier = f_fourier.T.conj()
368 No newline at end of file
370 #f_capon = f_capon.T.conj()
369 #f_fourier = f_fourier.T.conj() No newline at end of file
371 #f_maxent = f_maxent.T.conj()
370 #f_capon = f_capon.T.conj() No newline at end of file
372
371 #f_maxent = f_maxent.T.conj() No newline at end of file
373 #factr = factr.T.conj()
372 No newline at end of file
374
373 #factr = factr.T.conj() No newline at end of file
375 # calculate correlation
374 No newline at end of file
376
375 # calculate correlation No newline at end of file
377 corr_fourier = np.dot(f_fourier.T.conj(),factr) / (np.linalg.norm(f_fourier)*np.linalg.norm(factr));
376 No newline at end of file
378 corr_capon = np.dot(f_capon.T.conj(),factr) / (np.linalg.norm(f_capon)*np.linalg.norm(factr));
377 corr_fourier = np.dot(f_fourier.T.conj(),factr) / (np.linalg.norm(f_fourier)*np.linalg.norm(factr)); No newline at end of file
379 corr_maxent = np.dot(f_maxent.T.conj(),factr) / (np.linalg.norm(f_maxent)*np.linalg.norm(factr));
378 corr_capon = np.dot(f_capon.T.conj(),factr) / (np.linalg.norm(f_capon)*np.linalg.norm(factr)); No newline at end of file
380 #corr_cs = np.dot(f_cs,factr) / (norm(f_cs)*norm(factr));
379 corr_maxent = np.dot(f_maxent.T.conj(),factr) / (np.linalg.norm(f_maxent)*np.linalg.norm(factr)); No newline at end of file
381
380 #corr_cs = np.dot(f_cs,factr) / (norm(f_cs)*norm(factr)); No newline at end of file
382
381 No newline at end of file
383 # calculate centered correlation
382 No newline at end of file
384 f0 = factr - np.mean(factr);
383 # calculate centered correlation No newline at end of file
385 f1 = f_fourier - np.mean(f_fourier);
384 f0 = factr - np.mean(factr); No newline at end of file
386
385 f1 = f_fourier - np.mean(f_fourier); No newline at end of file
387 corrc_fourier = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1));
386 No newline at end of file
388 f1 = f_capon - np.mean(f_capon);
387 corrc_fourier = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1)); No newline at end of file
389 corrc_capon = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1));
388 f1 = f_capon - np.mean(f_capon); No newline at end of file
390 f1 = f_maxent - np.mean(f_maxent);
389 corrc_capon = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1)); No newline at end of file
391 corrc_maxent = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1));
390 f1 = f_maxent - np.mean(f_maxent); No newline at end of file
392 #f1 = f_cs - mean(f_cs);
391 corrc_maxent = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1)); No newline at end of file
393 #corrc_cs = dot(f0,f1) / (norm(f0)*norm(f1));
392 #f1 = f_cs - mean(f_cs); No newline at end of file
394
393 #corrc_cs = dot(f0,f1) / (norm(f0)*norm(f1)); No newline at end of file
395
394 No newline at end of file
396
395 No newline at end of file
397 # # # plot stuff #########################
396 No newline at end of file
398
397 # # # plot stuff ######################### No newline at end of file
399 #---- Capon----
398 No newline at end of file
400 plt.figure(4)
399 #---- Capon---- No newline at end of file
401 plt.subplot(2, 1, 1)
400 plt.figure(4) No newline at end of file
402 plt.plot(180/math.pi*thetar, f_capon, 'r', label='Capon')
401 plt.subplot(2, 1, 1) No newline at end of file
403 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth')
402 plt.plot(180/math.pi*thetar, f_capon, 'r', label='Capon') No newline at end of file
404 plt.ylabel('Power (arbitrary units)')
403 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth') No newline at end of file
405 plt.legend(loc='upper right')
404 plt.ylabel('Power (arbitrary units)') No newline at end of file
406
405 plt.legend(loc='upper right') No newline at end of file
407 # formatting y-axis
406 No newline at end of file
408 locs,labels = plt.yticks()
407 # formatting y-axis No newline at end of file
409 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4))
408 locs,labels = plt.yticks() No newline at end of file
410 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes)
409 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4)) No newline at end of file
411
410 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes) No newline at end of file
412
411 No newline at end of file
413 #---- MaxEnt----
412 No newline at end of file
414 plt.subplot(2, 1, 2)
413 #---- MaxEnt---- No newline at end of file
415 plt.plot(180/math.pi*thetar, f_maxent, 'r', label='MaxEnt')
414 plt.subplot(2, 1, 2) No newline at end of file
416 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth')
415 plt.plot(180/math.pi*thetar, f_maxent, 'r', label='MaxEnt') No newline at end of file
417 plt.ylabel('Power (arbitrary units)')
416 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth') No newline at end of file
418 plt.legend(loc='upper right')
417 plt.ylabel('Power (arbitrary units)') No newline at end of file
419
418 plt.legend(loc='upper right') No newline at end of file
420 # formatting y-axis
419 No newline at end of file
421 locs,labels = plt.yticks()
420 # formatting y-axis No newline at end of file
422 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4))
421 locs,labels = plt.yticks() No newline at end of file
423 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes)
422 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4)) No newline at end of file
424
423 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes) No newline at end of file
425 plt.show()
424 No newline at end of file
426
425 plt.show() No newline at end of file
427
426 No newline at end of file
428 # # PLOT PARA COMPRESSED SENSING
427 No newline at end of file
429 # #
428 # # PLOT PARA COMPRESSED SENSING No newline at end of file
430 # # subplot(3,1,3);
429 # # No newline at end of file
431 # # plot(180/pi*thetar,f_cs,'r-');
430 # # subplot(3,1,3); No newline at end of file
432 # # hold on;
431 # # plot(180/pi*thetar,f_cs,'r-'); No newline at end of file
433 # # plot(180/pi*thetat,fact,'k--');
432 # # hold on; No newline at end of file
434 # # hold off;
433 # # plot(180/pi*thetat,fact,'k--'); No newline at end of file
435 # # ylim([min(f_cs) 1.1*max(fact)]);
434 # # hold off; No newline at end of file
436 # # # title(sprintf('rel. RMSE: #.2e\tCorr: #.3f Corrc: #.3f', relrmse_cs, corr_cs, corrc_cs));
435 # # ylim([min(f_cs) 1.1*max(fact)]); No newline at end of file
437 # # # title 'Compressed Sensing - Debauchies Wavelets'
436 # # # title(sprintf('rel. RMSE: #.2e\tCorr: #.3f Corrc: #.3f', relrmse_cs, corr_cs, corrc_cs)); No newline at end of file
438 # # xlabel 'Degrees'
437 # # # title 'Compressed Sensing - Debauchies Wavelets' No newline at end of file
439 # # ylabel({'Power';'(arbitrary units)'})
438 # # xlabel 'Degrees' No newline at end of file
440 # # legend('Comp. Sens.','Truth');
439 # # ylabel({'Power';'(arbitrary units)'}) No newline at end of file
441 # #
440 # # legend('Comp. Sens.','Truth'); No newline at end of file
442 # # # set(gcf,'Position',[749 143 528 881]); # CSL
441 # # No newline at end of file
443 # # # set(gcf,'Position',[885 -21 528 673]); # macbook
442 # # # set(gcf,'Position',[749 143 528 881]); # CSL No newline at end of file
444 # # pause(0.01);
443 # # # set(gcf,'Position',[885 -21 528 673]); # macbook No newline at end of file
445
444 # # pause(0.01); No newline at end of file
446
445 No newline at end of file
447 # # Store Results
446 No newline at end of file
448 corr[0, snri, Ni] = corr_fourier;
447 # # Store Results No newline at end of file
449 corr[1, snri, Ni] = corr_capon;
448 corr[0, snri, Ni] = corr_fourier; No newline at end of file
450 corr[2, snri, Ni] = corr_maxent;
449 corr[1, snri, Ni] = corr_capon; No newline at end of file
451 #corr[3, snri, Ni] = corr_cs;
450 corr[2, snri, Ni] = corr_maxent; No newline at end of file
452
451 #corr[3, snri, Ni] = corr_cs; No newline at end of file
453 rmse[0,snri,Ni] = relrmse_fourier;
452 No newline at end of file
454 rmse[1,snri,Ni] = relrmse_capon;
453 rmse[0,snri,Ni] = relrmse_fourier; No newline at end of file
455 rmse[2,snri,Ni] = relrmse_maxent;
454 rmse[1,snri,Ni] = relrmse_capon; No newline at end of file
456 #rmse[3,snri,Ni] = relrmse_cs;
455 rmse[2,snri,Ni] = relrmse_maxent; No newline at end of file
457
456 #rmse[3,snri,Ni] = relrmse_cs; No newline at end of file
458 corrc[0,snri,Ni] = corrc_fourier;
457 No newline at end of file
459 corrc[1,snri,Ni] = corrc_capon;
458 corrc[0,snri,Ni] = corrc_fourier; No newline at end of file
460 corrc[2,snri,Ni] = corrc_maxent;
459 corrc[1,snri,Ni] = corrc_capon; No newline at end of file
461 #corrc[3,snri,Ni] = corrc_cs;
460 corrc[2,snri,Ni] = corrc_maxent; No newline at end of file
462
461 #corrc[3,snri,Ni] = corrc_cs; No newline at end of file
463
462 No newline at end of file
464 print 'Capon:\t', elapsed_time_capon, 'sec';
463 No newline at end of file
465 print 'Maxent:\t',elapsed_time_maxent, 'sec';
464 print 'Capon:\t', elapsed_time_capon, 'sec'; No newline at end of file
466 #print 'CS:\t%3.3f sec\n',elapsed_time_cs;
465 print 'Maxent:\t',elapsed_time_maxent, 'sec'; No newline at end of file
467
466 #print 'CS:\t%3.3f sec\n',elapsed_time_cs; No newline at end of file
468 print (NN*(snri+1) + Ni), '/', (SNRdBvec.size*NN);
467 No newline at end of file
469
468 print (NN*(snri+1) + Ni), '/', (SNRdBvec.size*NN); No newline at end of file
470 print corr
469 No newline at end of file
471
470 print corr No newline at end of file
472 L472: rhodecode diff rendering error
471 No newline at end of file
473 L473: rhodecode diff rendering error
@@ -1,34 +1,32
1 ''' No newline at end of file
1 '''
2 Created on May 30, 2014 No newline at end of file
2 Created on May 30, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 import numpy as np No newline at end of file
7 import numpy as np
8 No newline at end of file
8
9 def cshift(x, m): No newline at end of file
9 def cshift(x, m):
10 No newline at end of file
10
11 # Circular Shift No newline at end of file
11 # Circular Shift
12 # No newline at end of file
12 #
13 # USAGE: No newline at end of file
13 # USAGE:
14 # y = cshift(x, m) No newline at end of file
14 # y = cshift(x, m)
15 # INPUT: No newline at end of file
15 # INPUT:
16 # x - N-point vector No newline at end of file
16 # x - N-point vector
17 # m - amount of shift (pos=left, neg=right) No newline at end of file
17 # m - amount of shift (pos=left, neg=right)
18 # OUTPUT: No newline at end of file
18 # OUTPUT:
19 # y - vector x will be shifted by m samples to the left No newline at end of file
19 # y - vector x will be shifted by m samples to the left
20 # No newline at end of file
20 #
21 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
21 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
22 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
22 # http://taco.poly.edu/WaveletSoftware/
23 No newline at end of file
23
24 No newline at end of file
24
25 N = x.size; No newline at end of file
25 N = x.size;
26 n = np.arange(N); No newline at end of file
26 n = np.arange(N);
27 n = np.mod(n-m, N); No newline at end of file
27 n = np.mod(n-m, N);
28
28
No newline at end of file
29 print x.shape
No newline at end of file
30 No newline at end of file
31 y = x[0,n]; No newline at end of file
29 y = x[0,n];
32 No newline at end of file
30
33 No newline at end of file
31
34 return y No newline at end of file
32 return y
@@ -1,41 +1,39
1 ''' No newline at end of file
1 '''
2 Created on May 26, 2014 No newline at end of file
2 Created on May 26, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 import numpy as np No newline at end of file
7 import numpy as np
8 from FSfarras import * No newline at end of file
8 from FSfarras import *
9 from dualfilt1 import * No newline at end of file
9 from dualfilt1 import *
10 from dualtree import * No newline at end of file
10 from dualtree import *
11 from idualtree import * No newline at end of file
11 from idualtree import *
12 No newline at end of file
12
13 def deb4_basis(N): No newline at end of file
13 def deb4_basis(N):
14 No newline at end of file
14
15 Psi = np.zeros(shape=(N,2*N+1));
15 Psi = np.zeros(shape=(N,2*N+1));
No newline at end of file
16 idx = 0; No newline at end of file
16 idx = 1;
No newline at end of file
17 No newline at end of file
18 J = 4; No newline at end of file
17 J = 4;
19 [Faf, Fsf] = FSfarras(); No newline at end of file
18 [Faf, Fsf] = FSfarras();
20 [af, sf] = dualfilt1(); No newline at end of file
19 [af, sf] = dualfilt1();
21 No newline at end of file
20
22 # compute transform of zero vector No newline at end of file
21 # compute transform of zero vector
23 x = np.zeros(shape=(1,N)); No newline at end of file
22 x = np.zeros(shape=(1,N));
24 w = dualtree(x, J, Faf, af); No newline at end of file
23 w = dualtree(x, J, Faf, af);
25 No newline at end of file
24
26 No newline at end of file
25 # Uses both real and imaginary wavelets
27 # Uses both real and imaginary wavelets No newline at end of file
26 for i in range (0, J):
28 for i in range (0, J): No newline at end of file
27 for j in range (0, 1):
29 for j in range (0, 1): No newline at end of file
28 for k in range (0, (w[i][j]).size):
30 for k in range (0, (w[i][j]).size): No newline at end of file
29 w[i][j][0,k] = 1;
31 w[i][j][0,k] = 1; No newline at end of file
30 y = idualtree(w, J, Fsf, sf);
32 y = idualtree(w, J, Fsf, sf); No newline at end of file
31 w[i][j][0,k] = 0;
33 w[i][j][0,k] = 0; No newline at end of file
32 # store it
34 # store it No newline at end of file
33 Psi[:,idx] = y.T.conj();
35 Psi[:,idx] = y.T.conj(); No newline at end of file
34 idx = idx + 1;
36 idx = idx + 1; No newline at end of file
35
37 No newline at end of file
36 # Add uniform vector (seems to be useful if there's a background
38 # Add uniform vector (seems to be useful if there's a background
37 Psi[:,2*N] = 1/np.sqrt(N);
No newline at end of file
38 No newline at end of file
39 Psi[:,2*N+1] = 1/np.sqrt(N); No newline at end of file
40 No newline at end of file
39 return Psi
41 return Psi No newline at end of file
40 L40: rhodecode diff rendering error
@@ -1,46 +1,46
1 ''' No newline at end of file
1 '''
2 Created on Jun 5, 2014 No newline at end of file
2 Created on Jun 5, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 from sfb import * No newline at end of file
7 from sfb import *
8 No newline at end of file
8
9 def idualtree(w, J, Fsf, sf): No newline at end of file
9 def idualtree(w, J, Fsf, sf):
10 No newline at end of file
10
11 # Inverse Dual-tree Complex DWT No newline at end of file
11 # Inverse Dual-tree Complex DWT
12 # No newline at end of file
12 #
13 # USAGE: No newline at end of file
13 # USAGE:
14 # y = idualtree(w, J, Fsf, sf) No newline at end of file
14 # y = idualtree(w, J, Fsf, sf)
15 # INPUT: No newline at end of file
15 # INPUT:
16 # w - DWT coefficients No newline at end of file
16 # w - DWT coefficients
17 # J - number of stages No newline at end of file
17 # J - number of stages
18 # Fsf - synthesis filters for the last stage No newline at end of file
18 # Fsf - synthesis filters for the last stage
19 # sf - synthesis filters for preceeding stages No newline at end of file
19 # sf - synthesis filters for preceeding stages
20 # OUTUT: No newline at end of file
20 # OUTUT:
21 # y - output signal No newline at end of file
21 # y - output signal
22 # See dualtree No newline at end of file
22 # See dualtree
23 # No newline at end of file
23 #
24 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
24 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
25 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
25 # http://taco.poly.edu/WaveletSoftware/
26 No newline at end of file
26
27 # Tree 1 No newline at end of file
27 # Tree 1
28 y1 = w[J][0]; No newline at end of file
28 y1 = w[J][0];
29 No newline at end of file
29
30 for j in range (J-1, 0, -1): No newline at end of file
30 for j in range (J-1, 0, -1):
31 y1 = sfb(y1, w[j][0], sf[0,0]); No newline at end of file
31 y1 = sfb(y1, w[j][0], sf[0,0]);
32 No newline at end of file
32
33 y1 = sfb(y1, w[0][0], Fsf[0,0]); No newline at end of file
33 y1 = sfb(y1, w[0][0], Fsf[0,0]);
34 No newline at end of file
34
35 # Tree 2 No newline at end of file
35 # Tree 2
36 y2 = w[J][1]; No newline at end of file
36 y2 = w[J][1];
37 No newline at end of file
37
38 for j in range (J-1, 0, -1):
38 for j in range (J-1, 0, -1):
No newline at end of file
39 y2 = sfb(y2, w[j][1], sf[0,1]); No newline at end of file
39 y2 = sfb(y2, w[j][2], sf[0,1]); No newline at end of file
40 No newline at end of file
40
41 y2 = sfb(y2, w[0][1], Fsf[0,1]); No newline at end of file
41 y2 = sfb(y2, w[0][1], Fsf[0,1]);
42 No newline at end of file
42
43 # normalization No newline at end of file
43 # normalization
44 y = (y1 + y2)/np.sqrt(2); No newline at end of file
44 y = (y1 + y2)/np.sqrt(2);
45 No newline at end of file
45
46 return y No newline at end of file
46 return y
@@ -1,82 +1,85
1 ''' No newline at end of file
1 '''
2 Created on May 27, 2014 No newline at end of file
2 Created on May 27, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 #from scipy.sparse import eye No newline at end of file
7 #from scipy.sparse import eye
8 from scipy import linalg No newline at end of file
8 from scipy import linalg
9 import scipy.sparse as sps No newline at end of file
9 import scipy.sparse as sps
10 import numpy as np No newline at end of file
10 import numpy as np
11 No newline at end of file
11
12 def irls_dn(A,b,p,lambda1): No newline at end of file
12 def irls_dn(A,b,p,lambda1):
13 No newline at end of file
13
14 No newline at end of file
14
15 # Minimize lambda*||u||_p + ||A*u-b||_2, 0 < p <= 1 No newline at end of file
15 # Minimize lambda*||u||_p + ||A*u-b||_2, 0 < p <= 1
16 # using Iterative Reweighted Least Squares No newline at end of file
16 # using Iterative Reweighted Least Squares
17 # (see http://math.lanl.gov/Research/Publications/Docs/chartrand-2008-iteratively.pdf No newline at end of file
17 # (see http://math.lanl.gov/Research/Publications/Docs/chartrand-2008-iteratively.pdf
18 # and http://web.eecs.umich.edu/~aey/sparse/sparse11.pdf) No newline at end of file
18 # and http://web.eecs.umich.edu/~aey/sparse/sparse11.pdf)
19 No newline at end of file
19
20 # Note to self: I found that "warm-starting" didn't really help too much. No newline at end of file
20 # Note to self: I found that "warm-starting" didn't really help too much.
21 No newline at end of file
21
22 [M,N] = A.shape; No newline at end of file
22 [M,N] = A.shape;
23 # Initialize and precompute: No newline at end of file
23 # Initialize and precompute:
24 eps = 1e-2; # damping parameter
24 eps = 1e-2; # damping parameter
No newline at end of file
25
25 [Q,R] = linalg.qr(A.T.conj(),0);
No newline at end of file
No newline at end of file
26 [Q,R] = linalg.qr(A.T.conj(), mode='economic');
26 print A.shape
No newline at end of file
No newline at end of file
27
27 print R.shape
No newline at end of file
No newline at end of file
28 No newline at end of file
28 print b.shape No newline at end of file
29 c = linalg.solve(R.T.conj(),b); # will be used later also
29 c = linalg.solve(R.T.conj(),b); # will be used later also
No newline at end of file
30 u = np.dot(Q,c); # minimum 2-norm solution No newline at end of file
30 u = Q*c; # minimum 2-norm solution No newline at end of file
31 I = sps.eye(M); No newline at end of file
31 I = sps.eye(M);
32 No newline at end of file
32
33 #---------- not needed, defined above-------------- No newline at end of file
33 #---------- not needed, defined above--------------
34 # Spacing of floating point numbers No newline at end of file
34 # Spacing of floating point numbers
35 #eps = np.spacing(1) No newline at end of file
35 #eps = np.spacing(1)
36 #-------------------------------------------------- No newline at end of file
36 #--------------------------------------------------
37 No newline at end of file
37
38 # Loop until damping parameter is small enough No newline at end of file
38 # Loop until damping parameter is small enough
39 while (eps > 1e-7): No newline at end of file
39 while (eps > 1e-7):
40 epschange = 0; No newline at end of file
40 epschange = 0;
41 # Loop until it's time to change eps No newline at end of file
41 # Loop until it's time to change eps
42 while (~epschange): No newline at end of file
42 while (~epschange):
43 # main loop No newline at end of file
43 # main loop
44 # u_n = W*A'*(A*W*A'+ lambda*I)^-1 * b No newline at end of file
44 # u_n = W*A'*(A*W*A'+ lambda*I)^-1 * b
45 # where W = diag(1/w) No newline at end of file
45 # where W = diag(1/w)
46 # where w = (u.^2 + eps).^(p/2-1) No newline at end of file
46 # where w = (u.^2 + eps).^(p/2-1)
47 No newline at end of file
47
48 # Update No newline at end of file
48 # Update
49 w = (u**2 + eps)**(1-p/2); No newline at end of file
49 w = (u**2 + eps)**(1-p/2);
50 No newline at end of file
50
51 # Empty temporary N x N matrix No newline at end of file
51 # Empty temporary N x N matrix
52 temp = np.zeros(shape=(N,N)) No newline at end of file
52 temp = np.zeros(shape=(N,N))
53 No newline at end of file
53
54 k = 0 No newline at end of file
54 # Sparse matrix
55 # Sparse matrix
No newline at end of file
56 for i in range (0, N):
55 for i in range (1, N):
No newline at end of file
No newline at end of file
57 for j in range (0,N): No newline at end of file
56 for j in range (1,N): No newline at end of file
57 if(i==j):
58 if(i==j):
No newline at end of file
59 temp[i,j] = w[k]
58 temp[i,j] = w No newline at end of file
No newline at end of file
60 k = k+1 No newline at end of file
59 No newline at end of file
61
60 # Compressed Sparse Matrix No newline at end of file
62 # Compressed Sparse Matrix
61 W = sps.csr_matrix(temp); #Compressed Sparse Row matrix No newline at end of file
63 W = sps.csr_matrix(temp); #Compressed Sparse Row matrix
62 No newline at end of file
64
63 No newline at end of file
65
64 WAT = W*A.T.conj();
66 WAT = W*A.T.conj();
No newline at end of file
67
65 u_new = WAT * ( linalg.solve (A*WAT + lambda1*I), b); No newline at end of file
No newline at end of file
68 u_new = np.dot(WAT , linalg.solve(np.dot(A,WAT) + np.dot(lambda1,I), b)); No newline at end of file
66 No newline at end of file
69
67 # See if this subproblem is converging No newline at end of file
70 # See if this subproblem is converging
68 delu = np.linalg.norm(u_new-u)/np.linalg.norm(u);
71 delu = np.linalg.norm(u_new-u)/np.linalg.norm(u);
No newline at end of file
72 epschange = delu < (np.sqrt(eps)/100.0); No newline at end of file
69 epschange = delu < (np.sqrt(eps)/100); No newline at end of file
70 No newline at end of file
73
71 # Make update No newline at end of file
74 # Make update
72 u = u_new; No newline at end of file
75 u = u_new;
73 No newline at end of file
76
74
77
No newline at end of file
78 eps = eps/10.0; # decrease eps No newline at end of file
75 eps = eps/10; # decrease eps No newline at end of file
76 # Print info
79 # Print info
No newline at end of file
80 #print 'eps =',eps; No newline at end of file
77 print 'eps =',eps; No newline at end of file
78 No newline at end of file
81
79 return u No newline at end of file
82 return u
80 No newline at end of file
83
81 No newline at end of file
84
82 No newline at end of file
85
@@ -1,55 +1,76
1 ''' No newline at end of file
1 '''
2 Created on May 30, 2014 No newline at end of file
2 Created on May 30, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 from irls_dn import * No newline at end of file
7 from irls_dn import *
8 from scipy.optimize import fsolve No newline at end of file
8 from scipy.optimize import fsolve
9 import numpy as np
No newline at end of file
10 from scipy.optimize import root No newline at end of file
9 No newline at end of file
11
10 def irls_dn2(A,b,p,G): No newline at end of file
12 def irls_dn2(A,b,p,G):
11 No newline at end of file
13
12 # Minimize ||u||_p subject to ||A*u-b||_2^2 <= G (0 < p <= 1) No newline at end of file
14 # Minimize ||u||_p subject to ||A*u-b||_2^2 <= G (0 < p <= 1)
13 No newline at end of file
15
14 # What this function actually does is finds the lambda1 so that the solution No newline at end of file
16 # What this function actually does is finds the lambda1 so that the solution
15 # to the following problem satisfies ||A*u-b||_2^2 <= G: No newline at end of file
17 # to the following problem satisfies ||A*u-b||_2^2 <= G:
16 # Minimize lambda1*||u||_p + ||A*u-b||_2 No newline at end of file
18 # Minimize lambda1*||u||_p + ||A*u-b||_2
17 No newline at end of file
19
18 # Start with a large lambda1, and do a line search until fidelity <= G. No newline at end of file
20 # Start with a large lambda1, and do a line search until fidelity <= G.
19 # (Inversions with large lambda1 are really fast anyway). No newline at end of file
21 # (Inversions with large lambda1 are really fast anyway).
20 No newline at end of file
22
21 # Then spin up fsolve to localize the root even better No newline at end of file
23 # Then spin up fsolve to localize the root even better
22 No newline at end of file
24
23 # Line Search No newline at end of file
25 # Line Search
24
26
No newline at end of file
27 alpha = 2.0; # Line search parameter No newline at end of file
25 alpha = 2; # Line search parameter No newline at end of file
26 lambda1 = 1e5; # What's a reasonable but safe initial guess? No newline at end of file
28 lambda1 = 1e5; # What's a reasonable but safe initial guess?
27 u = irls_dn(A,b,p,lambda1);
29 u = irls_dn(A,b,p,lambda1);
No newline at end of file
30 fid = np.linalg.norm(np.dot(A,u)-b)**2; No newline at end of file
28 fid = np.norm(A*u-b)**2; No newline at end of file
29 No newline at end of file
31
30 print '----------------------------------\n'; No newline at end of file
32 print '----------------------------------\n';
31 No newline at end of file
33
32 while (fid >= G): No newline at end of file
34 while (fid >= G):
33 lambda1 = lambda1 / alpha; # Balance between speed and accuracy No newline at end of file
35 lambda1 = lambda1 / alpha; # Balance between speed and accuracy
34 u = irls_dn(A,b,p,lambda1);
36 u = irls_dn(A,b,p,lambda1);
No newline at end of file
37 fid = np.linalg.norm(np.dot(A,u)-b)**2;
35 fid = np.norm(A*u-b)**2;
No newline at end of file
No newline at end of file
38 print 'lambda = %2e \t' % lambda1, '||A*u-b||^2 = %.1f\n' % fid; No newline at end of file
36 print 'lambda1 = #2e \t ||A*u-b||^2 = #.1f\n',lambda1,fid; No newline at end of file
37 No newline at end of file
39
38 # Refinement using fzero No newline at end of file
40 # Refinement using fzero
39 lambda0 = np.array([lambda1,lambda1*alpha]); # interval with zero-crossing No newline at end of file
41 lambda0 = np.array([lambda1,lambda1*alpha]); # interval with zero-crossing
40
42
No newline at end of file
43 def myfun(lambda1):
41 f = lambda lambda1: np.norm(A*irls_dn(A,b,p,lambda1) - b)**2 - G; No newline at end of file
No newline at end of file
44 print "A = ", A.shape
No newline at end of file
45 print "b = ", b.shape
No newline at end of file
46 lambda1
No newline at end of file
47 return np.linalg.norm(A*irls_dn(A,b,p,lambda1) - b)**2 - G;
No newline at end of file
48
No newline at end of file
49 #f = lambda lambda1: np.linalg.norm(A*irls_dn(A,b,p,lambda1) - b)**2 - G; NOOOOOO No newline at end of file
42 No newline at end of file
50
43 No newline at end of file
51
44 # opts = optimset('fzero'); No newline at end of file
52 # opts = optimset('fzero');
45 # # opts.Display = 'iter'; No newline at end of file
53 # # opts.Display = 'iter';
46 # opts.Display = 'none'; No newline at end of file
54 # opts.Display = 'none';
47 # opts.TolX = 0.01*lambda1; No newline at end of file
55 # opts.TolX = 0.01*lambda1;
48
56
No newline at end of file
57 #sol1 = fsolve(myfun,lambda0.ravel(), args=(), xtol=1e-14, maxfev=100000);
49 lambda1 = fsolve(f,lambda0); # FALTA OPTIMIZE ESTO No newline at end of file
No newline at end of file
58 print "tolerancia=", 0.01*lambda1
No newline at end of file
59
No newline at end of file
60 #lambda1 = root(myfun,lambda0, method='krylov', tol=0.01*lambda1);
No newline at end of file
61
No newline at end of file
62
No newline at end of file
63 print "lamda1=", lambda1
No newline at end of file
64 print "lambda0=", lambda0
No newline at end of file
65
No newline at end of file
66 lambda1 = fsolve(myfun,lambda0); # FALTA OPTIMIZE ESTO
No newline at end of file
67
No newline at end of file
68 print "A = ", A.shape
No newline at end of file
69 print "b = ", b.shape
No newline at end of file
70 print "lambda1=", lambda1.shape No newline at end of file
50 No newline at end of file
71
51 u = irls_dn(A,b,p,lambda1); No newline at end of file
72 u = irls_dn(A,b,p,lambda1);
52 No newline at end of file
73
53 No newline at end of file
74
54 return u; No newline at end of file
75 return u;
55 No newline at end of file
76
@@ -1,68 +1,60
1 ''' No newline at end of file
1 '''
2 Created on Jun 5, 2014 No newline at end of file
2 Created on Jun 5, 2014
3 No newline at end of file
3
4 @author: Yolian Amaro No newline at end of file
4 @author: Yolian Amaro
5 ''' No newline at end of file
5 '''
6 No newline at end of file
6
7 from multirate import * No newline at end of file
7 from multirate import *
8 import numpy as np No newline at end of file
8 import numpy as np
9 from cshift import * No newline at end of file
9 from cshift import *
10 No newline at end of file
10
11 def sfb(lo, hi, sf): No newline at end of file
11 def sfb(lo, hi, sf):
12 No newline at end of file
12
13 # Synthesis filter bank No newline at end of file
13 # Synthesis filter bank
14 # No newline at end of file
14 #
15 # USAGE: No newline at end of file
15 # USAGE:
16 # y = sfb(lo, hi, sf) No newline at end of file
16 # y = sfb(lo, hi, sf)
17 # INPUT: No newline at end of file
17 # INPUT:
18 # lo - low frqeuency input No newline at end of file
18 # lo - low frqeuency input
19 # hi - high frequency input No newline at end of file
19 # hi - high frequency input
20 # sf - synthesis filters No newline at end of file
20 # sf - synthesis filters
21 # sf(:, 1) - lowpass filter (even length) No newline at end of file
21 # sf(:, 1) - lowpass filter (even length)
22 # sf(:, 2) - highpass filter (even length) No newline at end of file
22 # sf(:, 2) - highpass filter (even length)
23 # OUTPUT: No newline at end of file
23 # OUTPUT:
24 # y - output signal No newline at end of file
24 # y - output signal
25 # See also afb No newline at end of file
25 # See also afb
26 # No newline at end of file
26 #
27 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
27 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
28 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
28 # http://taco.poly.edu/WaveletSoftware/
29 No newline at end of file
29
30 N = 2*lo.size; No newline at end of file
30 N = 2*lo.size;
31 L = sf.size/2;
31 L = sf.size/2;
No newline at end of file
32 #print 'N', N
No newline at end of file
33 #print 'sf', sf
No newline at end of file
34
No newline at end of file
35
No newline at end of file
36 #print 'sf[:,0]', sf[:,0].shape
No newline at end of file
37 #print 'sf[:,1]', sf[:,1].shape
No newline at end of file
38 #print 'sbf hi', hi.shape
No newline at end of file
39
No newline at end of file
40 No newline at end of file
41 No newline at end of file
32
42 # Need to change format for upfirdn funct: No newline at end of file
33 # Need to change format for upfirdn funct:
43 lo = lo.T.conj() No newline at end of file
34 lo = lo.T.conj()
44 lo = lo.reshape(lo.size) No newline at end of file
35 lo = lo.reshape(lo.size)
45
36
No newline at end of file
37 #print 'sfb hi', hi No newline at end of file
46 print 'sfb hi', hi No newline at end of file
47 No newline at end of file
38
48 # Need to change format for upfirdn funct: No newline at end of file
39 # Need to change format for upfirdn funct:
49 hi = hi.T.conj() No newline at end of file
40 hi = hi.T.conj()
50 hi = hi.reshape(hi.size) No newline at end of file
41 hi = hi.reshape(hi.size)
51 No newline at end of file
42
52 #hi = hi.reshape(1, hi.size) No newline at end of file
43 #hi = hi.reshape(1, hi.size)
53 No newline at end of file
44
54 lo = upfirdn(lo, sf[:,0], 2, 1); No newline at end of file
45
55 hi = upfirdn(hi, sf[:,1], 2, 1); No newline at end of file
46 lo = upfirdn(lo, sf[:,0], 2, 1);
56 y = lo + hi; No newline at end of file
47 hi = upfirdn(hi, sf[:,1], 2, 1);
57 y[0:L-1] = y[0:L-1] + y[N+ np.arange(0,L-1)]; #CHECK IF ARANGE IS CORRECT No newline at end of file
48 y = lo + hi;
58 y = y[0:N]; No newline at end of file
49 y[0:L-1] = y[0:L-1] + y[N+ np.arange(0,L-1)]; #CHECK IF ARANGE IS CORRECT
59
50 y = y[0:N];
No newline at end of file
51 No newline at end of file
60 print 'y en sbf\n', y.shape No newline at end of file
61 No newline at end of file
52 #print 'y en sbf\n', y.shape
62 y = y.reshape(1, y.size)
53
No newline at end of file
54 y = y.reshape(1, y.size) No newline at end of file
63 print 'y en sbf\n', y.shape No newline at end of file
64 No newline at end of file
55 #print 'y en sbf\n', y.shape
65 y = cshift(y, 1-L/2); No newline at end of file
56
66 No newline at end of file
57 y = cshift(y, 1-L/2);
67 return y; No newline at end of file
58
68 No newline at end of file
59 return y;
General Comments 0
You need to be logged in to leave comments. Login now