@@ -22,23 +22,24 @@ function legendre_ϕ_ψ(k)
22
22
ϕ_2x_coefs[ki+ 1 , 1 : (ki+ 1 )] .= sqrt (2 * (2 * ki+ 1 )) .* coeffs (l (p2))
23
23
end
24
24
25
- ψ1_coefs . = ϕ_2x_coefs
25
+ ψ1_coefs = zeros (k, k)
26
26
ψ2_coefs = zeros (k, k)
27
27
for ki in 0 : (k- 1 )
28
+ ψ1_coefs[ki+ 1 , :] .= ϕ_2x_coefs[ki+ 1 , :]
28
29
for i in 0 : (k- 1 )
29
30
a = ϕ_2x_coefs[ki+ 1 , 1 : (ki+ 1 )]
30
31
b = ϕ_coefs[i+ 1 , 1 : (i+ 1 )]
31
32
proj_ = proj_factor (a, b)
32
- view ( ψ1_coefs, ki+ 1 , :) .- = proj_ .* view (ϕ_coefs, i+ 1 , :)
33
- view ( ψ2_coefs, ki+ 1 , :) .- = proj_ .* view (ϕ_coefs, i+ 1 , :)
33
+ ψ1_coefs[ ki+ 1 , :] .- = proj_ .* view (ϕ_coefs, i+ 1 , :)
34
+ ψ2_coefs[ ki+ 1 , :] .- = proj_ .* view (ϕ_coefs, i+ 1 , :)
34
35
end
35
36
36
37
for j in 0 : (k- 1 )
37
38
a = ϕ_2x_coefs[ki+ 1 , 1 : (ki+ 1 )]
38
39
b = ψ1_coefs[j+ 1 , :]
39
40
proj_ = proj_factor (a, b)
40
- view ( ψ1_coefs, ki+ 1 , :) .- = proj_ .* view (ψ1_coefs, j+ 1 , :)
41
- view ( ψ2_coefs, ki+ 1 , :) .- = proj_ .* view (ψ2_coefs, j+ 1 , :)
41
+ ψ1_coefs[ ki+ 1 , :] .- = proj_ .* view (ψ1_coefs, j+ 1 , :)
42
+ ψ2_coefs[ ki+ 1 , :] .- = proj_ .* view (ψ2_coefs, j+ 1 , :)
42
43
end
43
44
44
45
a = ψ1_coefs[ki+ 1 , :]
@@ -129,16 +130,11 @@ end
129
130
# end
130
131
131
132
function legendre_filter (k)
132
- # x = Symbol('x')
133
- # H0 = np.zeros((k,k))
134
- # H1 = np.zeros((k,k))
135
- # G0 = np.zeros((k,k))
136
- # G1 = np.zeros((k,k))
137
- # PHI0 = np.zeros((k,k))
138
- # PHI1 = np.zeros((k,k))
139
- # phi, psi1, psi2 = get_phi_psi(k, base)
140
-
141
- # ----------------------------------------------------------
133
+ H0 = zeros (k, k)legendre
134
+ H1 = zeros (k, k)
135
+ G0 = zeros (k, k)
136
+ G1 = zeros (k, k)
137
+ ϕ, ψ1, ψ2 = legendre_ϕ_ψ (k)
142
138
143
139
# roots = Poly(legendre(k, 2*x-1)).all_roots()
144
140
# x_m = np.array([rt.evalf(20) for rt in roots]).astype(np.float64)
@@ -150,29 +146,23 @@ function legendre_filter(k)
150
146
# G0[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, x_m/2) * phi[kpi](x_m)).sum()
151
147
# H1[ki, kpi] = 1/np.sqrt(2) * (wm * phi[ki]((x_m+1)/2) * phi[kpi](x_m)).sum()
152
148
# G1[ki, kpi] = 1/np.sqrt(2) * (wm * psi(psi1, psi2, ki, (x_m+1)/2) * phi[kpi](x_m)).sum()
153
-
154
- # PHI0 = np.eye(k)
155
- # PHI1 = np.eye(k)
156
-
157
- # ----------------------------------------------------------
158
149
159
- # H0[np.abs (H0)<1e-8] = 0
160
- # H1[np.abs (H1)<1e-8] = 0
161
- # G0[np.abs (G0)<1e-8] = 0
162
- # G1[np.abs (G1)<1e-8] = 0
150
+ zero_out! (H0)
151
+ zero_out! (H1)
152
+ zero_out! (G0)
153
+ zero_out! (G1)
163
154
164
- # return H0, H1, G0, G1, PHI0, PHI1
155
+ return H0, H1, G0, G1, I (k), I (k)
165
156
end
166
157
167
158
function chebyshev_filter (k)
168
- # x = Symbol('x')
169
- # H0 = np.zeros((k,k))
170
- # H1 = np.zeros((k,k))
171
- # G0 = np.zeros((k,k))
172
- # G1 = np.zeros((k,k))
173
- # PHI0 = np.zeros((k,k))
174
- # PHI1 = np.zeros((k,k))
175
- # phi, psi1, psi2 = get_phi_psi(k, base)
159
+ H0 = zeros (k, k)
160
+ H1 = zeros (k, k)
161
+ G0 = zeros (k, k)
162
+ G1 = zeros (k, k)
163
+ Φ0 = zeros (k, k)
164
+ Φ1 = zeros (k, k)
165
+ ϕ, ψ1, ψ2 = chebyshev_ϕ_ψ (k)
176
166
177
167
# ----------------------------------------------------------
178
168
@@ -193,16 +183,13 @@ function chebyshev_filter(k)
193
183
194
184
# PHI0[ki, kpi] = (wm * phi[ki](2*x_m) * phi[kpi](2*x_m)).sum() * 2
195
185
# PHI1[ki, kpi] = (wm * phi[ki](2*x_m-1) * phi[kpi](2*x_m-1)).sum() * 2
196
-
197
- # PHI0[np.abs(PHI0)<1e-8] = 0
198
- # PHI1[np.abs(PHI1)<1e-8] = 0
199
-
200
- # ----------------------------------------------------------
201
186
202
- # H0[np.abs(H0)<1e-8] = 0
203
- # H1[np.abs(H1)<1e-8] = 0
204
- # G0[np.abs(G0)<1e-8] = 0
205
- # G1[np.abs(G1)<1e-8] = 0
187
+ zero_out! (H0)
188
+ zero_out! (H1)
189
+ zero_out! (G0)
190
+ zero_out! (G1)
191
+ zero_out! (Φ0)
192
+ zero_out! (Φ1)
206
193
207
- # return H0, H1, G0, G1, PHI0, PHI1
194
+ return H0, H1, G0, G1, Φ0, Φ1
208
195
end
0 commit comments