fftw_fft_complex

 

Description

Calculates the discrete Fourier transform or inverse Fourier transform of a sequence of iSize complex data values

Syntax

int fftw_fft_complex( int iSize, d_complex * vSig, FFT_SIGN iSign = FFT_FORWARD )

Parameters

iSize
[input] the number of data values.
vSig
[modify] the complex data sequences for input and the result data after transformation for output
iSign
[input] the transformation to carry out
= FFT_FORWARD: FFT (by default)
= FFT_BACKWARD: IFFT.

Return

Returns 0 for success or error codes for failure.

Examples

EX1

//Assume the current Worksheet has 6 columns, the first two columns contain 7 data each.
//The first column is the real part of the original complex data and the second column
//is the imaginary part. This piece of code reads in a sequence of these 7 complex data
//values and put the result of the discrete Fourier transform of the original data
//into the third and fourth columns. The third column is the real part and the fourth
//column is the imaginary part. Then inverse Fourier transform is performed, and the
//result is output into the fifth and sixth column.

#include <..\originlab\fft.h>

void TEST_fftw_fft_complex()
{
        int nSize = 7, success;
        //Attach two Datasets to these 2 columns
        Worksheet wks = Project.ActiveLayer();
        if(wks)
        {
            Dataset xx(wks, 0);
            Dataset yy(wks, 1);
            Dataset aa(wks, 2);
            aa.SetSize(nSize);
            Dataset bb(wks, 3);
            bb.SetSize(nSize);
            Dataset cc(wks, 4);
            cc.SetSize(nSize);  
            Dataset dd(wks, 5);
            dd.SetSize(nSize);
         
            vector x = xx, y = yy;
            //make a complex vector use x and y
            vector<complex> vc;
            vc.MakeComplex(x, y);
                        
            ///FFT
            success = fftw_fft_complex(nSize, vc);
                //put the result back to the current worksheet, the third and the fourth column.
            vc.GetReal(x);
            vc.GetImaginary(y);
            aa = x;
            bb = y;
                        
            ///IFT
            success = fftw_fft_complex(nSize, vc, FFT_BACKWARD);
                //put the result back to the current worksheet, the fifth and the sixth column.
            vc.GetReal(x);
            vc.GetImaginary(y);
            cc = x;
            dd = y;
    }
}

Remark

See Also

fft_fft_complex

Header to Include

fft.h

Reference