/*---------------------------------------------------------------------------* * IT++ * *---------------------------------------------------------------------------* * Copyright (c) 1995-2002 by Tony Ottosson, Thomas Eriksson, Pål Frenger, * * Tobias Ringström, and Jonas Samuelsson. * * * * Permission to use, copy, modify, and distribute this software and its * * documentation under the terms of the GNU General Public License is hereby * * granted. No representations are made about the suitability of this * * software for any purpose. It is provided "as is" without expressed or * * implied warranty. See the GNU General Public License for more details. * *---------------------------------------------------------------------------*/ /*! \file \brief Definition of an Orthogonal Frequency Division Multiplex (OFDM) class \author Pål Frenger, Anders Persson and Tony Ottosson 1.8 2003/05/22 08:55:18 */ #ifndef __ofdm_h #define __ofdm_h #include "base/vec.h" namespace itpp { /*! \ingroup modulators \brief Class for modulating and demodulation of OFDM signals using the FFT The modulated signal is normalized taking into account the cyclic prefix */ class OFDM { public: //! Empty constructor OFDM(void) { setup_done = false; } //! Constructor \a Nfft is the size of the FFT. \a Ncp is the length of the cyclic prefix. OFDM(int Nfft, int Ncp); //! Set parameters void set_parameters(const int Nfft, const int Ncp); //! Modulate complex data symbols. Length of \c input must be \c Nfft cvec modulate(const cvec &input); //! Modulate complex data symbols. Length of \c input must be \c Nfft void modulate(const cvec &input, cvec &output); //! Demodulate to complex valued symbols. Length of \c input must be \c Nfft+Ncp cvec demodulate(const cvec &input); //! Demodulate to complex valued symbols. Length of \c input must be \c Nfft+Ncp void demodulate(const cvec &input, cvec &output); private: bool setup_done; int Nfft, Ncp; }; } //namespace itpp #endif // __ofdm_h