Advertisement
Guest User

Untitled

a guest
Jul 8th, 2015
475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.48 KB | None | 0 0
  1. # modulo fft
  2. from math import
  3.  
  4. def fft(m, f=[]): #genera fft
  5.     result = []
  6.     n=2<<(m-1) 
  7.     nesp=0.5
  8.     for k in range(1,m+1):
  9.         d=n/(2<<(k-1)
  10.         nesp=nesp*2
  11.         s=0
  12.         for i in range(1,nesp+1):
  13.             r=s
  14.             z1=r>>(m-k)
  15.             z=0
  16.             for q in range(k):
  17.                 z=(((z1>>q) & 01) | (z<<1)
  18.             w=2*pi*z/(2<<(k-1))
  19.             e=cos(w)-sin(w)j
  20.             for l in range (d):
  21.                 r=l+s
  22.                 r1=r+d
  23.                 t=e*f[r1]  
  24.                 f[r1]=f[r]-t
  25.                 f[r]=f[r]+t
  26.                 s=s+2*d
  27.     #bitReversal(n, m, f=[])       
  28.     for x in range(1, n-1):
  29.         y=0
  30.         for i in range(m):
  31.             y=(((x>>i) & 01) | (y<<1))
  32.         if x<y :
  33.             t=f[x]
  34.             f[x]=f[y]
  35.             f[y]=t
  36.     #Ampiezze fasi 
  37.     nmezzi=n/2 
  38.     for i in range(n):
  39.         f[i]=f[i]/nmezzi
  40.     A[0]=f[0].real
  41.     phi[0]=0
  42.     for k in range(1, nmezzi+1):
  43.         A[k]=sqrt(f[k].real*f[k].real+f[k].imag*f[k].imag])
  44.         result.append(A[k])
  45.     if f[k].real == 0:
  46.         if f[k].imag>0:
  47.             phi[k]=pi
  48.         if f[k].imag==0:
  49.             phi[k]=0
  50.         if f[k].imag<0:
  51.             phi[k]=2*pi-pi/2
  52.     if f[k].real>0:
  53.         if f[k]>=0:
  54.             phi[k]=atan(f[k].imag, f[k].real)
  55.         if f[k]<0:
  56.             phi[k]=2*pi + atan(f[k].imag, f[k].real)
  57.     if f[k].real<0:
  58.         phi[k]=atan(f[k].imag, f[k].real)
  59.     return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement