2.1.22.2.1.39 fft_real


Description

Performs nFFT-point discrete Fourier transform or inverse Fourier transform.

Syntax

int fft_real( int nFFT, vector & vSig, FFT_SIGN iSign = FFT_FORWARD )

Parameters

nFFT
[input]number of points to do Fourier transform.
vSig
[modify]For forward transform, it contains real signal to be transformed.
For backward transform, it contains complex signal in Hermitian form.
For forward transform, it contains the result of DFT in Hermitian form.
For backward transform, it contains the result of IDFT.
iSign
[input] the transformation to carry out
= FFT_FORWARD: FFT (by default)
= FFT_BACKWARD: IFFT.

Return

Returns OE_NOERROR for success or error codes for failure.

Examples

Prior to compilation, load fft_utils.c to the workspace by executing the following LabTalk command:

Run.LoadOC("Originlab\fft_utils.c", 16);

To retain fft_utils.c in the workspace for successive sessions, drag and drop the file from the Temporary folder to the System folder.

EX1

//This example assumes a worksheet is active with four columns, where
//column 2 has the signal. Column 3 will be filled with the foward FFT result
//and column 4 will have the result of the IFFT. Column 4 should then have
//the same numbers as column 2.
 
#include <fft_utils.h> 
void fft_real_ex1()
{
    Worksheet wks = Project.ActiveLayer();
    Dataset dsData(wks, 1);
    Dataset dsFFT(wks, 2);
    Dataset dsIFFT(wks, 3);
    // If all datasets are valid, then proceed
    if( dsData && dsFFT && dsIFFT )
    {
        vector vec;
        vec = dsData;
        int nSize = vec.GetSize();
        // Perform forward FFT with exact size of signal
        int iRet = fft_real(nSize, vec);
        if(0 != iRet )
        {
            printf("Forward FFT returned error: %d\n", iRet );
            return;
        }
        // Store forward FFT result
        dsFFT = vec;
        // Perform backward FFT from the forward FFT result
        iRet = fft_real(nSize, vec, FFT_BACKWARD);
        if(0 != iRet )
        {
            printf("Backward FFT returned error: %d\n", iRet );
            return;
        }
        // Store the backward FFT result
        dsIFFT = vec;
    }
}

Remark

Performs nFFT-point discrete Fourier transform (real->complex) or inverse Fourier transform (complex->real).

vSig will be padded with zeros if it has less than nFFT points and truncated if it has more.

Padding with zeroes, or zero-filling, results in an FFT spectrum with higher resolution. This works best

when the original signal ends in value at, or close to, zero.

For forward FT, the output is in Hermitian form;

For backward FT, the input sequence is in Hermitian form.

See Also

fft_complex

Header to Include

fft_utils.h

Reference