Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

fft.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           fft.h  -  description
00003                              -------------------
00004     begin                : Mon Jul 1 2002
00005     copyright            : (C) 2002 by Peter Haase
00006     email                : mail@p-haase.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 #ifndef FFT_MYHEADER
00028 #define FFT_MYHEADER
00029 
00030 #include <stdexcept>
00031 #include <vector>
00032 
00033 #include "phbib.h"
00034 #include "signals.h"
00035 #include "misc.h"
00036 
00037 
00038 
00039 namespace simthlib
00040 {
00041 
00042 using simth::Complex;
00043 
00048 //--------------------------------------------------------------------
00049 //
00050 // class FastFourierTrans
00051 //
00052 //
00053 //   Konstruktoren
00054 //     FastFourierTrans():  einmalige Erstellung des Sinus-Arrays
00055 //
00056 //   Funktionen
00057 //     sinus_array():  Zeiger auf Feld mit Sinuswerten zurueckgeben
00058 //     Transform(Sequence &inseq, Sequence* &outseq,
00059 //   int space, int fac, flag_FFT isign) :
00060 //               inseq: Eingangssequence
00061 //              outseq: Ausgangssequence
00062 //                 space: Abtastschrittweite
00063 //                 fac: Oversamplingfaktor
00064 //               isign: Flag fuer FFT (-1) bzw. IFFT (1)
00065 //     FFT und IFFT : siehe Transformation ohne isign-Flag
00066 //
00067 //--------------------------------------------------------------------
00068 
00088 class FastFourierTrans
00089 {
00090 
00091   public:
00092 
00095     enum FFT_type {FT = -1, IFT = 1};
00096 
00097 
00100     FastFourierTrans() : MAX_FFT_LEN(4096) { MakeSinusArray(); }
00101 
00104     ~FastFourierTrans() { delete [] sinus; }
00105 
00108     void FFT(const simth::Array<Complex> &inseq,
00109              simth::Array<Complex>* outseq, int space, int fac) const;
00110 
00113     void IFFT(const simth::Array<Complex> &inseq,
00114               simth::Array<Complex>* outseq, int space, int fac) const;
00115 
00116   private:
00117 
00120     double *sinus;
00121 
00124     const int MAX_FFT_LEN;
00125 
00128     void MakeSinusArray(void);
00129 
00132     int GetNewLength(int len, int space, int fac) const;
00133 
00137     void Transform(const simth::Array<Complex> &inseq,
00138                    simth::Array<Complex> *outseq,
00139                    int space, int fac, FFT_type isign) const;
00140 
00141 
00142 
00143 };
00144 
00145 
00146 
00147 }
00148 
00149 
00150 
00151 #endif

Generated on Tue Aug 9 14:35:10 2005 for simtheticlib by  doxygen 1.4.1