X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Ffourier.h;h=f1067ddd9350029e639d24b6fe1f4d44674caad4;hb=bb09705ec0a20bf5b41b4248cf7800b000bc3fcb;hp=e1716f88fb9deef37de60be5ea9729a756eafce6;hpb=8a7697ce57b56cdc43698cd1241ad98d49f9b5ac;p=ctsim.git diff --git a/include/fourier.h b/include/fourier.h index e1716f8..f1067dd 100644 --- a/include/fourier.h +++ b/include/fourier.h @@ -26,6 +26,9 @@ ******************************************************************************/ #include +#ifdef HAVE_FFTW +#include +#endif class ImageFile; @@ -34,6 +37,11 @@ public: static void shuffleFourierToNaturalOrder (ImageFile& im); static void shuffleNaturalToFourierOrder (ImageFile& im); +#ifdef HAVE_FFTW + static void shuffleFourierToNaturalOrder (fftw_complex* pc, const int n); + static void shuffleNaturalToFourierOrder (fftw_complex* pc, const int n); +#endif + // Odd Number of Points // Natural Frequency Order: -(n-1)/2...-1,0,1...(n-1)/2 // Fourier Frequency Order: 0, 1..(n-1)/2,-(n-1)/2...-1 @@ -41,7 +49,7 @@ public: // Natural Frequency Order: -n/2...-1,0,1...((n/2)-1) // Fourier Frequency Order: 0,1...((n/2)-1),-n/2...-1 template - static void shuffleNaturalToFourierOrder (T* pVector, const int n) + static void shuffleNaturalToFourierOrder (T* pVector, const int n) { T* pTemp = new T [n]; int i; @@ -74,7 +82,7 @@ public: int i; if (isOdd(n)) { // Odd int iHalfN = (n - 1) / 2; - + pTemp[iHalfN] = pVector[0]; for (i = 0; i < iHalfN; i++) pTemp[i + 1 + iHalfN] = pVector[i + 1]; @@ -88,7 +96,7 @@ public: for (i = 0; i < iHalfN - 1; i++) pTemp[i + iHalfN + 1] = pVector[i+1]; } - + for (i = 0; i < n; i++) pVector[i] = pTemp[i]; delete pTemp;