26 #ifndef GRT_FAST_FOURIER_TRANSFORM_HEADER
27 #define GRT_FAST_FOURIER_TRANSFORM_HEADER
29 #include "../../Util/GRTCommon.h"
30 #include "../../CoreModules/GRTBase.h"
46 bool init(
const unsigned int windowSize,
const unsigned int windowFunction = RECTANGULAR_WINDOW,
const bool computeMagnitude =
true,
const bool computePhase =
true);
48 bool computeFFT( VectorDouble &data );
50 VectorDouble getMagnitudeData();
51 VectorDouble getPhaseData();
52 VectorDouble getPowerData();
53 double getAveragePower();
54 double *getMagnitudeDataPtr();
55 double *getPhaseDataPtr();
56 double *getPowerDataPtr();
58 UINT getFFTSize(){
return windowSize; }
61 bool windowData( VectorDouble &data );
62 bool realFFT(
const VectorDouble &realIn,
double *realOut,
double *imagOut );
63 bool FFT(
int NumSamples,
bool InverseTransform,
double *realIn,
double *imagIn,
double *realOut,
double *imagOut);
64 int numberOfBitsNeeded(
int PowerOfTwo);
65 int reverseBits(
int index,
int NumBits);
67 inline int fastReverseBits(
const int i,
const int NumBits);
68 inline bool isPowerOfTwo(
const unsigned int x);
70 unsigned int windowSize;
71 unsigned int windowFunction;
73 bool computeMagnitude;
79 VectorDouble magnitude;
83 const static int MAX_FAST_BITS = 16;
84 vector< vector< int > > bitTable;
87 enum WindowFunctionOptions{RECTANGULAR_WINDOW=0,BARTLETT_WINDOW,HAMMING_WINDOW,HANNING_WINDOW};
93 #endif //GRT_FAST_FOURIER_TRANSFORM_HEADER