sgarizvi icon

Discrete Fourier Transform

sgarizvi | PRO | 05/11/18 07:35:28 AM UTC | 0 ⭐ | 235 👁️ | Never ⏰ | []
C++ |

820 B

|

None

|

0 👍

/

0 👎

#include <complex>
#include <vector>
 
 
using namespace std;
 
typedef complex<double> cdouble;
 
const double PI2  = 2 * 3.141593654;
 
vector<cdouble> fft(const vector<double>& input)
{
    int N = input.size();
 
    vector<cdouble> output(N);
 
    for (int k=0; k<N; k++)
    {
        cdouble out_val(0,0);
 
        for(int n=0; n<N; n++)
        {
            out_val += cdouble(input[n],0.0) * cdouble(cos( (PI2 * k * n) / N ), sin( (PI2 * k * n) / N ));
        }
 
        output[k] = out_val;
    }
    return output;
}
 
vector<cdouble> fft(const vector<double>& input, int N)
{
    vector<cdouble> output(N);
 
    for (int k=0; k<N; k++)
    {
        cdouble out_val(0,0);
 
        for(int n=0; n<input.size(); n++)
        {
            out_val += cdouble(input[n],0.0) * cdouble(cos( (PI2 * k * n) / N ), sin( (PI2 * k * n) / N ));
        }
 
        output[k] = out_val;
    }
    return output;
}

Comments