Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1.  
  2.  
  3. complex<double>* fft(double *f, int N)
  4. {
  5.     vector<complex<double>> y;
  6.    
  7.  
  8.     if (N == 1)
  9.     {
  10.         y[0] = f[0];
  11.         return &y[0];
  12.     }
  13.        
  14.  
  15.     complex<double>* y0 = new complex<double>[N/2];
  16.     complex<double>* y1 = new complex<double>[N/2];
  17.    
  18.     double* f1 =new double(N / 2);
  19.     double* f2= new double(N / 2);
  20.    
  21.  
  22.     for (int i = 0; i < N / 2; i++)
  23.     {
  24.         f1[i] = f[i * 2];
  25.         f2[i] = f[i * 2 + 1];
  26.     }
  27.  
  28.     y0 = fft(f1,N);
  29.     y1 = fft(f2,N);
  30.  
  31.     vector<complex<double>> w;
  32.     for (int i = 0; i < N; i++) {
  33.         double alpha = 2 * pi * i / N;
  34.         w[i] = (cos(alpha), sin(alpha));
  35.     }
  36.  
  37.  
  38.     for (int k = 0; k < N / 2; k++) {
  39.         y[k] = y0[k] + w[k] * y1[k];
  40.         y.push_back(y[k]);
  41.         y[k + N / 2] = y0[k] - w[k] * y1[k];
  42.         y.push_back(y[k+N/2]);
  43.     }
  44.     return y;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement