00001 #ifndef vnl_fft1d_h_
00002 #define vnl_fft1d_h_
00003
00004
00005
00006
00007
00008
00009 #include <vcl_complex.h>
00010 #include <vnl/vnl_vector.h>
00011 #include <vnl/algo/vnl_fftxd_prime_factors.h>
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 template<class T>
00035 class vnl_fft1d : public vnl_vector<vcl_complex<T> > {
00036 typedef vnl_vector<vcl_complex<T> > base;
00037 public:
00038
00039 vnl_fft1d (const vnl_vector<T> &r);
00040 vnl_fft1d (const vnl_vector<vcl_complex<T> > &z, int dir);
00041
00042
00043 vnl_fft1d (const vnl_vector<T> &r, const vnl_vector<T> &i,
00044 const vnl_fftxd_prime_factors<T> &oPF, int dir);
00045 vnl_fft1d (const vnl_vector<T> &r,
00046 const vnl_fftxd_prime_factors<T> &oPF, int dir);
00047 vnl_fft1d (const T *realdata, const T *imagdata, unsigned len,
00048 const vnl_fftxd_prime_factors<T> &, int dir);
00049 vnl_fft1d (const T *data, unsigned len,
00050 const vnl_fftxd_prime_factors<T> &, int dir);
00051
00052
00053 #ifndef VCL_VC
00054 vnl_fft1d (const vnl_vector<vcl_complex<T> > &c,
00055 const vnl_fftxd_prime_factors<T> &, int dir);
00056 #endif
00057
00058 vnl_fft1d (const vcl_complex<T> *cdata, unsigned len,
00059 const vnl_fftxd_prime_factors<T> &, int dir);
00060
00061
00062 static int doFFT_IP (vcl_complex<T> *cdata, unsigned len,
00063 const vnl_fftxd_prime_factors<T> &, int dir);
00064 private:
00065 int doFFT (const vnl_fftxd_prime_factors<T> &, int dir);
00066 };
00067
00068 #endif // vnl_fft1d_h_