Révision 300 ETSN/MyDFT_8.py
MyDFT_8.py (revision 300) | ||
---|---|---|
11 | 11 |
Y=np.zeros(size).astype(np.float32) |
12 | 12 |
for i in range(size): |
13 | 13 |
for j in range(size): |
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)-y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]+x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
14 |
X[i]=X[i]+x[j]*cos(2.*pi*i*j/size)+y[j]*sin(2.*pi*i*j/size)
|
|
15 |
Y[i]=Y[i]-x[j]*sin(2.*pi*i*j/size)+y[j]*cos(2.*pi*i*j/size)
|
|
16 | 16 |
return(X,Y) |
17 | 17 |
|
18 | 18 |
# Numpy Discrete Fourier Transform |
... | ... | |
22 | 22 |
Y=np.zeros(size).astype(np.float32) |
23 | 23 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
24 | 24 |
for i in range(size): |
25 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
25 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
26 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
27 | 27 |
return(X,Y) |
28 | 28 |
|
29 | 29 |
# Numba Discrete Fourier Transform |
... | ... | |
35 | 35 |
Y=np.zeros(size).astype(np.float32) |
36 | 36 |
nj=np.multiply(2.0*np.pi/size,np.arange(size)).astype(np.float32) |
37 | 37 |
for i in numba.prange(size): |
38 |
X[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.add(np.multiply(np.sin(i*nj),x),np.multiply(np.cos(i*nj),y)))
|
|
38 |
X[i]=np.sum(np.add(np.multiply(np.cos(i*nj),x),np.multiply(np.sin(i*nj),y)))
|
|
39 |
Y[i]=np.sum(np.subtract(np.multiply(np.cos(i*nj),y),np.multiply(np.sin(i*nj),x)))
|
|
40 | 40 |
return(X,Y) |
41 | 41 |
|
42 | 42 |
# OpenCL complete operation |
... | ... | |
85 | 85 |
float A=0.,B=0.; |
86 | 86 |
for (uint i=0; i<size;i++) |
87 | 87 |
{ |
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
88 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
89 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
90 | 90 |
} |
91 | 91 |
A_g[gid]=A; |
92 | 92 |
B_g[gid]=B; |
... | ... | |
171 | 171 |
float A=0.,B=0.; |
172 | 172 |
for (uint i=0; i<size;i++) |
173 | 173 |
{ |
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)-b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size); |
|
174 |
A+=a_g[i]*cos(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*sin(2.*PI*(float)(gid*i)/(float)size);
|
|
175 |
B+=-a_g[i]*sin(2.*PI*(float)(gid*i)/(float)size)+b_g[i]*cos(2.*PI*(float)(gid*i)/(float)size);
|
|
176 | 176 |
} |
177 | 177 |
A_g[gid]=A; |
178 | 178 |
B_g[gid]=B; |
Formats disponibles : Unified diff