Performs nFFT-point discrete Fourier transform or inverse Fourier transform.
int fft_real( int nFFT, vector & vSig, FFT_SIGN iSign = FFT_FORWARD )
Returns OE_NOERROR for success or error codes for failure.
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; } }
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.
fft_utils.h