/***************************************************************************/ /* FFT.H */ /* Fast-Fourier-Transformation /* Author: Jens Ahrensfeld */ /* Datum : 24.06.1999 */ /* letzte �nderung: 09.06.2000 */ /***************************************************************************/ /* Tabellen und Funktionen f�r die FFT */ /***************************************************************************/ #ifndef FFT_H #define FFT_H #define PI 3.1415926535897932384626433832795 #ifndef float32_t #define float32_t float #endif #define fft_float_t float32_t #define FFT_ERROR 0x80000000 typedef struct _sfft_t { uint32_t m_numPoints, m_numStages; fft_float_t *pTwfRe, *pTwfIm; } fft_t; typedef struct _sfft2_t { fft_t *pXfft, *pYfft; uint32_t m_Nx, m_Ny; } fft2_t; /* DFT functions */ extern void DFT(fft_float_t *pDataR, fft_float_t *pDataI, uint32_t N); extern void IDFT(fft_float_t *pDataR, fft_float_t *pDataI, uint32_t N); /* FFT functions */ extern void FFTinit(fft_t *pFFT, uint32_t N); extern void FFTfree(fft_t *pFFT); extern void fft_inplace(fft_t *pFFT, fft_float_t*, fft_float_t*); extern void ifft_inplace(fft_t *pFFT, fft_float_t*, fft_float_t*); extern void ffts_inplace(fft_t *pFFT, fft_float_t *in_re, fft_float_t *in_im); extern void FFTCalcTwiddleTable (fft_float_t *pRealData, fft_float_t *pImagData, uint32_t numPoints); /* 2D FFT functions */ extern void FFT2Dinit(fft2_t *pFFT, uint32_t Nx, uint32_t Ny); extern void FFT2Dfree(fft2_t *pFFT); extern void fft2d_inplace(fft2_t *pFFT, fft_float_t **ppReal, fft_float_t **ppImag); extern void ifft2d_inplace(fft2_t *pFFT, fft_float_t **ppReal, fft_float_t **ppImag); /* Helper functions */ extern void Scale(fft_float_t *pRealData, fft_float_t *pImagData , fft_float_t scaleFactor, uint32_t N); extern void Modulus(fft_float_t *pRealData, fft_float_t *pImagData, uint32_t N); extern void Hanning (fft_float_t *pRealData, fft_float_t *pImagData, uint32_t N, uint32_t maximum); extern fft_float_t hanning_k (uint32_t, uint32_t); extern fft_float_t gauss_k(uint32_t, uint32_t, uint32_t); extern uint32_t IsPowerOfTwo(uint32_t N); #endif /* FFT_H */