##// END OF EJS Templates
Fixed errors, implemented sfb and idualtree classes
yamaro -
r19:20
parent child
Show More
@@ -0,0 +1,46
1 '''
No newline at end of file
2 Created on Jun 5, 2014
No newline at end of file
3
No newline at end of file
4 @author: Yolian Amaro
No newline at end of file
5 '''
No newline at end of file
6
No newline at end of file
7 from sfb import *
No newline at end of file
8
No newline at end of file
9 def idualtree(w, J, Fsf, sf):
No newline at end of file
10
No newline at end of file
11 # Inverse Dual-tree Complex DWT
No newline at end of file
12 #
No newline at end of file
13 # USAGE:
No newline at end of file
14 # y = idualtree(w, J, Fsf, sf)
No newline at end of file
15 # INPUT:
No newline at end of file
16 # w - DWT coefficients
No newline at end of file
17 # J - number of stages
No newline at end of file
18 # Fsf - synthesis filters for the last stage
No newline at end of file
19 # sf - synthesis filters for preceeding stages
No newline at end of file
20 # OUTUT:
No newline at end of file
21 # y - output signal
No newline at end of file
22 # See dualtree
No newline at end of file
23 #
No newline at end of file
24 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
No newline at end of file
25 # http://taco.poly.edu/WaveletSoftware/
No newline at end of file
26
No newline at end of file
27 # Tree 1
No newline at end of file
28 y1 = w[J][0];
No newline at end of file
29
No newline at end of file
30 for j in range (J-1, 0, -1):
No newline at end of file
31 y1 = sfb(y1, w[j][0], sf[0,0]);
No newline at end of file
32
No newline at end of file
33 y1 = sfb(y1, w[0][0], Fsf[0,0]);
No newline at end of file
34
No newline at end of file
35 # Tree 2
No newline at end of file
36 y2 = w[J][1];
No newline at end of file
37
No newline at end of file
38 for j in range (J-1, 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
41 y2 = sfb(y2, w[0][1], Fsf[0,1]);
No newline at end of file
42
No newline at end of file
43 # normalization
No newline at end of file
44 y = (y1 + y2)/np.sqrt(2);
No newline at end of file
45
No newline at end of file
46 return y No newline at end of file
@@ -0,0 +1,68
1 '''
No newline at end of file
2 Created on Jun 5, 2014
No newline at end of file
3
No newline at end of file
4 @author: Yolian Amaro
No newline at end of file
5 '''
No newline at end of file
6
No newline at end of file
7 from multirate import *
No newline at end of file
8 import numpy as np
No newline at end of file
9 from cshift import *
No newline at end of file
10
No newline at end of file
11 def sfb(lo, hi, sf):
No newline at end of file
12
No newline at end of file
13 # Synthesis filter bank
No newline at end of file
14 #
No newline at end of file
15 # USAGE:
No newline at end of file
16 # y = sfb(lo, hi, sf)
No newline at end of file
17 # INPUT:
No newline at end of file
18 # lo - low frqeuency input
No newline at end of file
19 # hi - high frequency input
No newline at end of file
20 # sf - synthesis filters
No newline at end of file
21 # sf(:, 1) - lowpass filter (even length)
No newline at end of file
22 # sf(:, 2) - highpass filter (even length)
No newline at end of file
23 # OUTPUT:
No newline at end of file
24 # y - output signal
No newline at end of file
25 # See also afb
No newline at end of file
26 #
No newline at end of file
27 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
No newline at end of file
28 # http://taco.poly.edu/WaveletSoftware/
No newline at end of file
29
No newline at end of file
30 N = 2*lo.size;
No newline at end of file
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
42 # Need to change format for upfirdn funct:
No newline at end of file
43 lo = lo.T.conj()
No newline at end of file
44 lo = lo.reshape(lo.size)
No newline at end of file
45
No newline at end of file
46 print 'sfb hi', hi
No newline at end of file
47
No newline at end of file
48 # Need to change format for upfirdn funct:
No newline at end of file
49 hi = hi.T.conj()
No newline at end of file
50 hi = hi.reshape(hi.size)
No newline at end of file
51
No newline at end of file
52 #hi = hi.reshape(1, hi.size)
No newline at end of file
53
No newline at end of file
54 lo = upfirdn(lo, sf[:,0], 2, 1);
No newline at end of file
55 hi = upfirdn(hi, sf[:,1], 2, 1);
No newline at end of file
56 y = lo + hi;
No newline at end of file
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
58 y = y[0:N];
No newline at end of file
59
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
62 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
65 y = cshift(y, 1-L/2);
No newline at end of file
66
No newline at end of file
67 return y;
No newline at end of file
68 No newline at end of file
@@ -1,65 +1,63
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 pywt No newline at end of file
7 import pywt
8 import numpy as np No newline at end of file
8 import numpy as np
9 No newline at end of file
9
10 def FSfarras(): No newline at end of file
10 def FSfarras():
11 #function [af, sf] = FSfarras No newline at end of file
11 #function [af, sf] = FSfarras
12 No newline at end of file
12
13 # Farras filters organized for the dual-tree No newline at end of file
13 # Farras filters organized for the dual-tree
14 # complex DWT. No newline at end of file
14 # complex DWT.
15 # No newline at end of file
15 #
16 # USAGE: No newline at end of file
16 # USAGE:
17 # [af, sf] = FSfarras No newline at end of file
17 # [af, sf] = FSfarras
18 # OUTPUT: No newline at end of file
18 # OUTPUT:
19 # af{i}, i = 1,2 - analysis filters for tree i No newline at end of file
19 # af{i}, i = 1,2 - analysis filters for tree i
20 # sf{i}, i = 1,2 - synthesis filters for tree i No newline at end of file
20 # sf{i}, i = 1,2 - synthesis filters for tree i
21 # See farras, dualtree, dualfilt1. No newline at end of file
21 # See farras, dualtree, dualfilt1.
22 # No newline at end of file
22 #
23 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
23 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
24 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
24 # http://taco.poly.edu/WaveletSoftware/
25 # No newline at end of file
25 #
26 # Translated to Python by Yolian Amaro No newline at end of file
26 # Translated to Python by Yolian Amaro
27 No newline at end of file
27
28 No newline at end of file
28
29 No newline at end of file
29 a1 = np.array( [
30 a1 = np.array( [ No newline at end of file
30 [ 0, 0],
31 [ 0, 0], No newline at end of file
31 [-0.08838834764832, -0.01122679215254],
32 [-0.08838834764832, -0.01122679215254], No newline at end of file
32 [ 0.08838834764832, 0.01122679215254],
33 [ 0.08838834764832, 0.01122679215254], No newline at end of file
33 [ 0.69587998903400, 0.08838834764832],
34 [ 0.69587998903400, 0.08838834764832], No newline at end of file
34 [ 0.69587998903400, 0.08838834764832],
35 [ 0.69587998903400, 0.08838834764832], No newline at end of file
35 [ 0.08838834764832, -0.69587998903400],
36 [ 0.08838834764832, -0.69587998903400], No newline at end of file
36 [-0.08838834764832, 0.69587998903400],
37 [-0.08838834764832, 0.69587998903400], No newline at end of file
37 [ 0.01122679215254, -0.08838834764832],
38 [ 0.01122679215254, -0.08838834764832], No newline at end of file
38 [ 0.01122679215254, -0.08838834764832],
39 [ 0.01122679215254, -0.08838834764832], No newline at end of file
39 [0, 0]
40 [0, 0] No newline at end of file
40 ] );
41 ] ); No newline at end of file
41
42 No newline at end of file
42 a2 = np.array([
43 a2 = np.array([ No newline at end of file
43 [ 0.01122679215254, 0],
44 [ 0.01122679215254, 0], No newline at end of file
44 [ 0.01122679215254, 0],
45 [ 0.01122679215254, 0], No newline at end of file
45 [-0.08838834764832, -0.08838834764832],
46 [-0.08838834764832, -0.08838834764832], No newline at end of file
46 [ 0.08838834764832, -0.08838834764832],
47 [ 0.08838834764832, -0.08838834764832], No newline at end of file
47 [ 0.69587998903400, 0.69587998903400],
48 [ 0.69587998903400, 0.69587998903400], No newline at end of file
48 [ 0.69587998903400, -0.69587998903400],
49 [ 0.69587998903400, -0.69587998903400], No newline at end of file
49 [ 0.08838834764832, 0.08838834764832],
50 [ 0.08838834764832, 0.08838834764832], No newline at end of file
50 [-0.08838834764832, 0.08838834764832],
51 [-0.08838834764832, 0.08838834764832], No newline at end of file
51 [ 0, 0.01122679215254],
52 [ 0, 0.01122679215254], No newline at end of file
52 [ 0, -0.01122679215254]
53 [ 0, -0.01122679215254] No newline at end of file
53 ]);
54 ]); No newline at end of file
54
55
55
No newline at end of file
56 #print a2.shape No newline at end of file
57 No newline at end of file
56 af = np.array([ [a1,a2] ], dtype=object)
58 af = np.array([ [a1,a2] ], dtype=object) No newline at end of file
57
59 No newline at end of file
58 s1 = a1[::-1]
60 s1 = a1[::-1] No newline at end of file
59 s2 = a2[::-1]
61 s2 = a2[::-1] No newline at end of file
60
62 No newline at end of file
61 sf = np.array([ [s1,s2] ], dtype=object)
63 sf = np.array([ [s1,s2] ], dtype=object) No newline at end of file
62
64 No newline at end of file
63 return af, sf
65 return af, sf No newline at end of file
64
@@ -1,468 +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 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); ###### REPLACED BY LINEs BELOW (?)
317 Psi = deb4_basis(Nr); ###### REPLACED BY LINE BELOW (?) No newline at end of file
No newline at end of file
318
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
318 No newline at end of file
321
319 # REMOVE THIS?-------------------------------- No newline at end of file
322 # REMOVE THIS?--------------------------------
320 #wavelet1 = pywt.Wavelet('db4') No newline at end of file
323 #wavelet1 = pywt.Wavelet('db4')
321 #Phi, Psi, x = wavelet1.wavefun(level=3) No newline at end of file
324 #Phi, Psi, x = wavelet1.wavefun(level=3)
322 # -------------------------------------------- No newline at end of file
325 # --------------------------------------------
323 No newline at end of file
326
324 # add "sum to 1" constraint
327 # add "sum to 1" constraint
No newline at end of file
328 # H2 = np.concatenate( (Hr, np.ones(shape=(1,Nr))), axis=0 );
325 H2 = np.concatenate( (Hr, np.ones(shape=(1,Nr))), axis=0 );
No newline at end of file
No newline at end of file
329 # N_temp = np.array([[Nr/Nt]]);
326 N_temp = np.array([[Nr/Nt]]);
No newline at end of file
No newline at end of file
330 # g2 = np.concatenate( (gnz, N_temp), axis=0 );
327 g2 = np.concatenate( (gnz, N_temp), axis=0 );
No newline at end of file
No newline at end of file
331 # H2 = H2.T.conj();
328 H2 = H2.T.conj();
No newline at end of file
No newline at end of file
332 #
329
No newline at end of file
No newline at end of file
333 # print 'H2 shape', H2.shape
330 print 'H2 shape', H2.shape
No newline at end of file
No newline at end of file
334 # print 'Psi shape', Psi.shape
331 print 'Psi shape', Psi.shape
No newline at end of file
No newline at end of file
335 #
332
No newline at end of file
No newline at end of file
336 # s = irls_dn2(np.dot(H2,Psi),g2,0.5,G); No newline at end of file
333 s = irls_dn2(H2*Psi,g2,0.5,G); No newline at end of file
334 # f_cs = Psi*s; No newline at end of file
337 # f_cs = Psi*s;
335 # No newline at end of file
338 #
336 # # plot No newline at end of file
339 # # plot
337 # plot(thetar,f_cs,'r.-'); No newline at end of file
340 # plot(thetar,f_cs,'r.-');
338 # hold on; No newline at end of file
341 # hold on;
339 # plot(thetat,fact,'k-'); No newline at end of file
342 # plot(thetat,fact,'k-');
340 # hold off; No newline at end of file
343 # hold off;
341 No newline at end of file
344
342 No newline at end of file
345
343 # # # Scaling and shifting No newline at end of file
346 # # # Scaling and shifting
344 # # # Only necessary for capon solution No newline at end of file
347 # # # Only necessary for capon solution
345 No newline at end of file
348
346 No newline at end of file
349
347 f_capon = f_capon/np.max(f_capon)*np.max(fact); No newline at end of file
350 f_capon = f_capon/np.max(f_capon)*np.max(fact);
348 No newline at end of file
351
349 No newline at end of file
352
350 ### analyze stuff ###################### No newline at end of file
353 ### analyze stuff ######################
351 # calculate MSE No newline at end of file
354 # calculate MSE
352 rmse_fourier = np.sqrt(np.mean((f_fourier - factr)**2)); No newline at end of file
355 rmse_fourier = np.sqrt(np.mean((f_fourier - factr)**2));
353 rmse_capon = np.sqrt(np.mean((f_capon - factr)**2)); No newline at end of file
356 rmse_capon = np.sqrt(np.mean((f_capon - factr)**2));
354 rmse_maxent = np.sqrt(np.mean((f_maxent - factr)**2)); No newline at end of file
357 rmse_maxent = np.sqrt(np.mean((f_maxent - factr)**2));
355 #rmse_cs = np.sqrt(np.mean((f_cs - factr).^2)); No newline at end of file
358 #rmse_cs = np.sqrt(np.mean((f_cs - factr).^2));
356 No newline at end of file
359
357 No newline at end of file
360
358 relrmse_fourier = rmse_fourier / np.linalg.norm(fact); No newline at end of file
361 relrmse_fourier = rmse_fourier / np.linalg.norm(fact);
359 relrmse_capon = rmse_capon / np.linalg.norm(fact); No newline at end of file
362 relrmse_capon = rmse_capon / np.linalg.norm(fact);
360 relrmse_maxent = rmse_maxent / np.linalg.norm(fact); No newline at end of file
363 relrmse_maxent = rmse_maxent / np.linalg.norm(fact);
361 #relrmse_cs = rmse_cs / np.norm(fact); No newline at end of file
364 #relrmse_cs = rmse_cs / np.norm(fact);
362 No newline at end of file
365
363 # To be able to perform dot product (align matrices) done below within the dot calculations No newline at end of file
366 # To be able to perform dot product (align matrices) done below within the dot calculations
364 No newline at end of file
367
365 No newline at end of file
368
366 #f_fourier = f_fourier.T.conj() No newline at end of file
369 #f_fourier = f_fourier.T.conj()
367 #f_capon = f_capon.T.conj() No newline at end of file
370 #f_capon = f_capon.T.conj()
368 #f_maxent = f_maxent.T.conj() No newline at end of file
371 #f_maxent = f_maxent.T.conj()
369 No newline at end of file
372
370 #factr = factr.T.conj() No newline at end of file
373 #factr = factr.T.conj()
371 No newline at end of file
374
372 # calculate correlation No newline at end of file
375 # calculate correlation
373 No newline at end of file
376
374 corr_fourier = np.dot(f_fourier.T.conj(),factr) / (np.linalg.norm(f_fourier)*np.linalg.norm(factr)); 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));
375 corr_capon = np.dot(f_capon.T.conj(),factr) / (np.linalg.norm(f_capon)*np.linalg.norm(factr)); 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));
376 corr_maxent = np.dot(f_maxent.T.conj(),factr) / (np.linalg.norm(f_maxent)*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));
377 #corr_cs = np.dot(f_cs,factr) / (norm(f_cs)*norm(factr)); No newline at end of file
380 #corr_cs = np.dot(f_cs,factr) / (norm(f_cs)*norm(factr));
378 No newline at end of file
381
379 No newline at end of file
382
380 # calculate centered correlation No newline at end of file
383 # calculate centered correlation
381 f0 = factr - np.mean(factr); No newline at end of file
384 f0 = factr - np.mean(factr);
382 f1 = f_fourier - np.mean(f_fourier); No newline at end of file
385 f1 = f_fourier - np.mean(f_fourier);
383 No newline at end of file
386
384 corrc_fourier = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1)); No newline at end of file
387 corrc_fourier = np.dot(f0.T.conj(),f1) / (np.linalg.norm(f0)*np.linalg.norm(f1));
385 f1 = f_capon - np.mean(f_capon); No newline at end of file
388 f1 = f_capon - np.mean(f_capon);
386 corrc_capon = 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));
387 f1 = f_maxent - np.mean(f_maxent); No newline at end of file
390 f1 = f_maxent - np.mean(f_maxent);
388 corrc_maxent = 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));
389 #f1 = f_cs - mean(f_cs); No newline at end of file
392 #f1 = f_cs - mean(f_cs);
390 #corrc_cs = dot(f0,f1) / (norm(f0)*norm(f1)); No newline at end of file
393 #corrc_cs = dot(f0,f1) / (norm(f0)*norm(f1));
391 No newline at end of file
394
392 No newline at end of file
395
393 No newline at end of file
396
394 # # # plot stuff ######################### No newline at end of file
397 # # # plot stuff #########################
395 No newline at end of file
398
396 #---- Capon---- No newline at end of file
399 #---- Capon----
397 plt.figure(4) No newline at end of file
400 plt.figure(4)
398 plt.subplot(2, 1, 1) No newline at end of file
401 plt.subplot(2, 1, 1)
399 plt.plot(180/math.pi*thetar, f_capon, 'r', label='Capon') No newline at end of file
402 plt.plot(180/math.pi*thetar, f_capon, 'r', label='Capon')
400 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth') No newline at end of file
403 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth')
401 plt.ylabel('Power (arbitrary units)') No newline at end of file
404 plt.ylabel('Power (arbitrary units)')
402 plt.legend(loc='upper right') No newline at end of file
405 plt.legend(loc='upper right')
403 No newline at end of file
406
404 # formatting y-axis No newline at end of file
407 # formatting y-axis
405 locs,labels = plt.yticks() No newline at end of file
408 locs,labels = plt.yticks()
406 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4)) No newline at end of file
409 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4))
407 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes) No newline at end of file
410 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes)
408 No newline at end of file
411
409 No newline at end of file
412
410 #---- MaxEnt---- No newline at end of file
413 #---- MaxEnt----
411 plt.subplot(2, 1, 2) No newline at end of file
414 plt.subplot(2, 1, 2)
412 plt.plot(180/math.pi*thetar, f_maxent, 'r', label='MaxEnt') No newline at end of file
415 plt.plot(180/math.pi*thetar, f_maxent, 'r', label='MaxEnt')
413 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth') No newline at end of file
416 plt.plot(180/math.pi*thetat,fact, 'k--', label='Truth')
414 plt.ylabel('Power (arbitrary units)') No newline at end of file
417 plt.ylabel('Power (arbitrary units)')
415 plt.legend(loc='upper right') No newline at end of file
418 plt.legend(loc='upper right')
416 No newline at end of file
419
417 # formatting y-axis No newline at end of file
420 # formatting y-axis
418 locs,labels = plt.yticks() No newline at end of file
421 locs,labels = plt.yticks()
419 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4)) No newline at end of file
422 plt.yticks(locs, map(lambda x: "%.1f" % x, locs*1e4))
420 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes) No newline at end of file
423 plt.text(0.0, 1.01, '1e-4', fontsize=10, transform = plt.gca().transAxes)
421 No newline at end of file
424
422 plt.show() No newline at end of file
425 plt.show()
423 No newline at end of file
426
424 No newline at end of file
427
425 # # PLOT PARA COMPRESSED SENSING No newline at end of file
428 # # PLOT PARA COMPRESSED SENSING
426 # # No newline at end of file
429 # #
427 # # subplot(3,1,3); No newline at end of file
430 # # subplot(3,1,3);
428 # # plot(180/pi*thetar,f_cs,'r-'); No newline at end of file
431 # # plot(180/pi*thetar,f_cs,'r-');
429 # # hold on; No newline at end of file
432 # # hold on;
430 # # plot(180/pi*thetat,fact,'k--'); No newline at end of file
433 # # plot(180/pi*thetat,fact,'k--');
431 # # hold off; No newline at end of file
434 # # hold off;
432 # # ylim([min(f_cs) 1.1*max(fact)]); No newline at end of file
435 # # ylim([min(f_cs) 1.1*max(fact)]);
433 # # # title(sprintf('rel. RMSE: #.2e\tCorr: #.3f Corrc: #.3f', relrmse_cs, corr_cs, corrc_cs)); No newline at end of file
436 # # # title(sprintf('rel. RMSE: #.2e\tCorr: #.3f Corrc: #.3f', relrmse_cs, corr_cs, corrc_cs));
434 # # # title 'Compressed Sensing - Debauchies Wavelets' No newline at end of file
437 # # # title 'Compressed Sensing - Debauchies Wavelets'
435 # # xlabel 'Degrees' No newline at end of file
438 # # xlabel 'Degrees'
436 # # ylabel({'Power';'(arbitrary units)'}) No newline at end of file
439 # # ylabel({'Power';'(arbitrary units)'})
437 # # legend('Comp. Sens.','Truth'); No newline at end of file
440 # # legend('Comp. Sens.','Truth');
438 # # No newline at end of file
441 # #
439 # # # set(gcf,'Position',[749 143 528 881]); # CSL No newline at end of file
442 # # # set(gcf,'Position',[749 143 528 881]); # CSL
440 # # # set(gcf,'Position',[885 -21 528 673]); # macbook No newline at end of file
443 # # # set(gcf,'Position',[885 -21 528 673]); # macbook
441 # # pause(0.01); No newline at end of file
444 # # pause(0.01);
442 No newline at end of file
445
443 No newline at end of file
446
444 # # Store Results No newline at end of file
447 # # Store Results
445 corr[0, snri, Ni] = corr_fourier; No newline at end of file
448 corr[0, snri, Ni] = corr_fourier;
446 corr[1, snri, Ni] = corr_capon; No newline at end of file
449 corr[1, snri, Ni] = corr_capon;
447 corr[2, snri, Ni] = corr_maxent; No newline at end of file
450 corr[2, snri, Ni] = corr_maxent;
448 #corr[3, snri, Ni] = corr_cs; No newline at end of file
451 #corr[3, snri, Ni] = corr_cs;
449 No newline at end of file
452
450 rmse[0,snri,Ni] = relrmse_fourier; No newline at end of file
453 rmse[0,snri,Ni] = relrmse_fourier;
451 rmse[1,snri,Ni] = relrmse_capon; No newline at end of file
454 rmse[1,snri,Ni] = relrmse_capon;
452 rmse[2,snri,Ni] = relrmse_maxent; No newline at end of file
455 rmse[2,snri,Ni] = relrmse_maxent;
453 #rmse[3,snri,Ni] = relrmse_cs; No newline at end of file
456 #rmse[3,snri,Ni] = relrmse_cs;
454 No newline at end of file
457
455 corrc[0,snri,Ni] = corrc_fourier; No newline at end of file
458 corrc[0,snri,Ni] = corrc_fourier;
456 corrc[1,snri,Ni] = corrc_capon; No newline at end of file
459 corrc[1,snri,Ni] = corrc_capon;
457 corrc[2,snri,Ni] = corrc_maxent; No newline at end of file
460 corrc[2,snri,Ni] = corrc_maxent;
458 #corrc[3,snri,Ni] = corrc_cs; No newline at end of file
461 #corrc[3,snri,Ni] = corrc_cs;
459 No newline at end of file
462
460 No newline at end of file
463
461 print 'Capon:\t', elapsed_time_capon, 'sec'; No newline at end of file
464 print 'Capon:\t', elapsed_time_capon, 'sec';
462 print 'Maxent:\t',elapsed_time_maxent, 'sec'; No newline at end of file
465 print 'Maxent:\t',elapsed_time_maxent, 'sec';
463 #print 'CS:\t%3.3f sec\n',elapsed_time_cs; No newline at end of file
466 #print 'CS:\t%3.3f sec\n',elapsed_time_cs;
464 No newline at end of file
467
465 print (NN*(snri+1) + Ni), '/', (SNRdBvec.size*NN); No newline at end of file
468 print (NN*(snri+1) + Ni), '/', (SNRdBvec.size*NN);
466 No newline at end of file
469
467 print corr No newline at end of file
470 print corr
468 No newline at end of file
471
@@ -1,59 +1,72
1 ''' No newline at end of file
1 '''
2 Created on May 29, 2014 No newline at end of file
2 Created on May 29, 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 sp import multirate
7 #from sp import multirate
No newline at end of file
8 from cshift import * No newline at end of file
8 import cshift No newline at end of file
9 from multirate import upfirdn No newline at end of file
9 from multirate import upfirdn
10 No newline at end of file
10
11 def afb(x, af): No newline at end of file
11 def afb(x, af):
12 No newline at end of file
12
13 # Analysis filter bank No newline at end of file
13 # Analysis filter bank
14 # No newline at end of file
14 #
15 # USAGE: No newline at end of file
15 # USAGE:
16 # [lo, hi] = afb(x, af) No newline at end of file
16 # [lo, hi] = afb(x, af)
17 # INPUT: No newline at end of file
17 # INPUT:
18 # x - N-point vector, where No newline at end of file
18 # x - N-point vector, where
19 # 1) N is even No newline at end of file
19 # 1) N is even
20 # 2) N >= length(af) No newline at end of file
20 # 2) N >= length(af)
21 # af - analysis filters No newline at end of file
21 # af - analysis filters
22 # af(:, 1) - lowpass filter (even length) No newline at end of file
22 # af(:, 1) - lowpass filter (even length)
23 # af(:, 2) - highpass filter (even length) No newline at end of file
23 # af(:, 2) - highpass filter (even length)
24 # OUTPUT: No newline at end of file
24 # OUTPUT:
25 # lo - Low frequecy output No newline at end of file
25 # lo - Low frequecy output
26 # hi - High frequency output No newline at end of file
26 # hi - High frequency output
27 # EXAMPLE: No newline at end of file
27 # EXAMPLE:
28 # [af, sf] = farras; No newline at end of file
28 # [af, sf] = farras;
29 # x = rand(1,64); No newline at end of file
29 # x = rand(1,64);
30 # [lo, hi] = afb(x, af); No newline at end of file
30 # [lo, hi] = afb(x, af);
31 # y = sfb(lo, hi, sf); No newline at end of file
31 # y = sfb(lo, hi, sf);
32 # err = x - y; No newline at end of file
32 # err = x - y;
33 # max(abs(err)) No newline at end of file
33 # max(abs(err))
34 # No newline at end of file
34 #
35 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
35 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
36 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
36 # http://taco.poly.edu/WaveletSoftware/
37 No newline at end of file
37
38 N = x.size;
38 N = x.size;
No newline at end of file
39 L = (af).size/4; #L should be = 5
39 L = (af).size/2;
No newline at end of file
No newline at end of file
40 #print af
40 x = cshift(x,-L); No newline at end of file
No newline at end of file
41 #print 'L', L
No newline at end of file
42 x = cshift(x,-(L-1));
No newline at end of file
43
No newline at end of file
44 # print 'afb x', x.shape
No newline at end of file
45 # print 'af[:,0]',af[:,0].shape
No newline at end of file
46 # print 'af[:,1]',af[:,1].shape
No newline at end of file
47 # print '-----------------------' No newline at end of file
41 No newline at end of file
48
42 # lowpass filter No newline at end of file
49 # lowpass filter
43 lo = upfirdn(x, af[:,0], 1, 2); No newline at end of file
50 lo = upfirdn(x, af[:,0], 1, 2);
44 No newline at end of file
51
45 # VERIFY THIS!!!!!!!!!!!! No newline at end of file
52
46 for i in range(0, L):
53 # VERIFY THIS!!!!!!!!!!!!
No newline at end of file
54 for i in range(0, L): No newline at end of file
47 lo[i] = lo[N/2+[i]] + lo[i]; No newline at end of file
48
55 lo[i] = lo[N/2+i] + lo[i];
No newline at end of file
56
49 lo = lo[1:N/2]; No newline at end of file
No newline at end of file
57 lo = lo[0:N/2]; No newline at end of file
50 No newline at end of file
58
51 # highpass filter
59
No newline at end of file
60 # highpass filter No newline at end of file
52 hi = upfirdn(x, af[:,2], 1, 2); No newline at end of file
53 No newline at end of file
61 hi = upfirdn(x, af[:,1], 1, 2);
54 for j in range(0, L):
62
No newline at end of file
63 for j in range(0, L): No newline at end of file
55 hi[j] = hi(N/2+[j]) + hi[j]; No newline at end of file
56
64 hi[j] = hi[N/2+j] + hi[j];
No newline at end of file
65
57 hi = hi[1:N/2]; No newline at end of file
No newline at end of file
66 hi = hi[0:N/2];
No newline at end of file
67
No newline at end of file
68 # Reshape from 1D to 2D
No newline at end of file
69 lo = lo.reshape(1, lo.size) No newline at end of file
58 No newline at end of file
70 hi = hi.reshape(1, hi.size)
59 return lo, hi No newline at end of file
71
60
72 return lo, hi
@@ -1,29 +1,34
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
16 # x - N-point vector
No newline at end of file
17 # m - amount of shift (pos=left, neg=right) No newline at end of file
17 # m - amount of shift No newline at end of file
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 N = x.size;
24
No newline at end of file
25 N = x.size; No newline at end of file
25 n = np.arange(N-1); No newline at end of file
26 n = np.mod(n-m, N);
26 n = np.arange(N);
No newline at end of file
27 n = np.mod(n-m, N);
27 y = x[n]; No newline at end of file
No newline at end of file
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
28 No newline at end of file
32
29 return y No newline at end of file
33
30 L30: rhodecode diff rendering error
34 return y
@@ -1,38 +1,41
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
7 import numpy as np
No newline at end of file
8 from FSfarras import *
8 import FSfarras
No newline at end of file
No newline at end of file
9 from dualfilt1 import *
9 import dualfilt1 No newline at end of file
No newline at end of file
10 from dualtree import *
No newline at end of file
11 from idualtree import * No newline at end of file
10 No newline at end of file
12
11 def deb4_basis(N): No newline at end of file
13 def deb4_basis(N):
12 No newline at end of file
14
13 Psi = np.zeros(shape=(N,2*N+1)); No newline at end of file
15 Psi = np.zeros(shape=(N,2*N+1));
14 idx = 1; No newline at end of file
16 idx = 1;
15 No newline at end of file
17
16 J = 4;
18 J = 4;
No newline at end of file
19 [Faf, Fsf] = FSfarras();
17 [Faf, Fsf] = FSfarras;
No newline at end of file
No newline at end of file
20 [af, sf] = dualfilt1(); No newline at end of file
18 [af, sf] = dualfilt1; No newline at end of file
19 No newline at end of file
21
20 # compute transform of zero vector No newline at end of file
22 # compute transform of zero vector
21 x = np.zeros(shape=(1,N));
23 x = np.zeros(shape=(1,N));
No newline at end of file
24 w = dualtree(x, J, Faf, af);
22 #w = dualtree(x, J, Faf, af);
No newline at end of file
No newline at end of file
25
23 # #
No newline at end of file
No newline at end of file
26
24 # # # Uses both real and imaginary wavelets
No newline at end of file
No newline at end of file
27 # Uses both real and imaginary wavelets
25 # # for i in range (1, J+1):
No newline at end of file
No newline at end of file
28 for i in range (0, J):
26 # # for j in range (1, 2):
No newline at end of file
No newline at end of file
29 for j in range (0, 1):
27 # # for k in range (1, (w[i][j]).size):
No newline at end of file
No newline at end of file
30 for k in range (0, (w[i][j]).size):
28 # # w[i][j](k) = 1;
No newline at end of file
No newline at end of file
31 w[i][j][0,k] = 1;
29 # # y = idualtree(w, J, Fsf, sf);
No newline at end of file
No newline at end of file
32 y = idualtree(w, J, Fsf, sf);
30 # # w[i][j](k) = 0;
No newline at end of file
No newline at end of file
33 w[i][j][0,k] = 0;
31 # # # store it
No newline at end of file
No newline at end of file
34 # store it
32 # # Psi(:,idx) = y.T.conj();
No newline at end of file
No newline at end of file
35 Psi[:,idx] = y.T.conj();
33 # # idx = idx + 1;
No newline at end of file
No newline at end of file
36 idx = idx + 1;
34 # #
No newline at end of file
No newline at end of file
37
35 # # # Add uniform vector (seems to be useful if there's a background
No newline at end of file
No newline at end of file
38 # Add uniform vector (seems to be useful if there's a background
36 # # Psi(:,2*N+1) = 1/np.sqrt(N);
No newline at end of file
No newline at end of file
39 Psi[:,2*N+1] = 1/np.sqrt(N);
37 #
No newline at end of file
No newline at end of file
40
38 # return Psi No newline at end of file
No newline at end of file
41 return Psi No newline at end of file
@@ -1,63 +1,76
1 ''' No newline at end of file
1 '''
2 Created on May 29, 2014 No newline at end of file
2 Created on May 29, 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
7 import numpy as np
No newline at end of file
8 from afb import * No newline at end of file
8 import afb No newline at end of file
9 No newline at end of file
9
10 def dualtree(x, J, Faf, af): No newline at end of file
10 def dualtree(x, J, Faf, af):
11 No newline at end of file
11
12 # Dual-tree Complex Discrete Wavelet Transform No newline at end of file
12 # Dual-tree Complex Discrete Wavelet Transform
13 # No newline at end of file
13 #
14 # USAGE: No newline at end of file
14 # USAGE:
15 # w = dualtree(x, J, Faf, af) No newline at end of file
15 # w = dualtree(x, J, Faf, af)
16 # INPUT: No newline at end of file
16 # INPUT:
17 # x - N-point vector No newline at end of file
17 # x - N-point vector
18 # 1) N is divisible by 2^J No newline at end of file
18 # 1) N is divisible by 2^J
19 # 2) N >= 2^(J-1)*length(af) No newline at end of file
19 # 2) N >= 2^(J-1)*length(af)
20 # J - number of stages No newline at end of file
20 # J - number of stages
21 # Faf - filters for the first stage No newline at end of file
21 # Faf - filters for the first stage
22 # af - filters for the remaining stages No newline at end of file
22 # af - filters for the remaining stages
23 # OUTPUT: No newline at end of file
23 # OUTPUT:
24 # w - DWT coefficients No newline at end of file
24 # w - DWT coefficients
25 # w{j}{1}, j = 1..J - real part No newline at end of file
25 # w{j}{1}, j = 1..J - real part
26 # w{j}{2}, j = 1..J - imaginary part No newline at end of file
26 # w{j}{2}, j = 1..J - imaginary part
27 # w{J+1}{d} - lowpass coefficients, d = 1,2 No newline at end of file
27 # w{J+1}{d} - lowpass coefficients, d = 1,2
28 # EXAMPLE: No newline at end of file
28 # EXAMPLE:
29 # x = rand(1, 512); No newline at end of file
29 # x = rand(1, 512);
30 # J = 4; No newline at end of file
30 # J = 4;
31 # [Faf, Fsf] = FSfarras; No newline at end of file
31 # [Faf, Fsf] = FSfarras;
32 # [af, sf] = dualfilt1; No newline at end of file
32 # [af, sf] = dualfilt1;
33 # w = dualtree(x, J, Faf, af); No newline at end of file
33 # w = dualtree(x, J, Faf, af);
34 # y = idualtree(w, J, Fsf, sf); No newline at end of file
34 # y = idualtree(w, J, Fsf, sf);
35 # err = x - y; No newline at end of file
35 # err = x - y;
36 # max(abs(err)) No newline at end of file
36 # max(abs(err))
37 # No newline at end of file
37 #
38 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY No newline at end of file
38 # WAVELET SOFTWARE AT POLYTECHNIC UNIVERSITY, BROOKLYN, NY
39 # http://taco.poly.edu/WaveletSoftware/ No newline at end of file
39 # http://taco.poly.edu/WaveletSoftware/
40 No newline at end of file
40
41 # ---------Trees Structure---------------#
No newline at end of file
42 # w [ 0 1 2 .... J ] #
No newline at end of file
43 # | | | | #
No newline at end of file
44 # [0 1] [0 1] [0 1] [0 1] #
No newline at end of file
45 #----------------------------------------#
No newline at end of file
46 No newline at end of file
41 # normalization No newline at end of file
47 # normalization
42 x = x/np.sqrt(2); No newline at end of file
48 x = x/np.sqrt(2);
43
49
No newline at end of file
50
44 w = np.zeros(shape=(J,2)) ### VERIFY THIS DEFINITION No newline at end of file
No newline at end of file
51 w = np.zeros(shape=(J+1), dtype=object)
No newline at end of file
52
No newline at end of file
53 for j in range (0, w.size):
No newline at end of file
54 w[j] = np.zeros(shape=(J+1), dtype=object) No newline at end of file
45 No newline at end of file
55
46 # Tree 1
56 # Tree 1
No newline at end of file
57 [x1, w[0][0]] = afb(x, Faf[0,0]); # w{1}{1} No newline at end of file
47 [x1,w[1,0]] = afb(x, Faf[0,1]); # w{1}{1} No newline at end of file
48
58
No newline at end of file
49 for j in range (2,J):
No newline at end of file
50 [x1,w[j,0]] = afb(x1, af[0,1]); #check this No newline at end of file
51
59
No newline at end of file
60 for j in range (1,J):
52 w[J+1,1] = x1; No newline at end of file
No newline at end of file
61 [x1,w[j][0]] = afb(x1, af[0,0]); ### or 0,1????
No newline at end of file
62
No newline at end of file
63
No newline at end of file
64
No newline at end of file
65 w[J][0] = x1; No newline at end of file
53 No newline at end of file
66
54 # Tree 2
67 # Tree 2
No newline at end of file
68 [x2,w[0][1]] = afb(x, Faf[0,1]); No newline at end of file
55 [x2,w[1,2]] = afb(x, Faf[0,1]); No newline at end of file
56
69
No newline at end of file
70 for j in range (1,J):
57 for j in range (2,J):
No newline at end of file
No newline at end of file
71 [x2,w[j][1]] = afb(x2, af[0,1]); No newline at end of file
58 [x2,w[j,2]] = afb(x2, af[0,1]); No newline at end of file
59
72
No newline at end of file
73 w[J][1] = x2; No newline at end of file
60 w[J+1,2] = x2; No newline at end of file
61 No newline at end of file
74
62 return w No newline at end of file
75 return w
63 No newline at end of file
76
General Comments 0
You need to be logged in to leave comments. Login now