itpp_sci  1.0.0
it++ based simulation framework for scicoslab, scilab and scipy
sim_cofdm_mod.hpp
1 /*xxx
2 * \brief - SIM::cofdm_mod - COFDM modulator derived from itpp::OFDM
3 * \author maki
4 */
5 
6 #ifndef COFDM_MOD_HPP
7 #define COFDM_MOD_HPP
8 
9 #include <itpp/itbase.h>
10 #include <itpp/itcomm.h>
11 
12 #include <complex>
13 #include "sim\_sim_extension.hpp"
14 
15 
16 using namespace itpp;
17 using namespace std;
18 
19 namespace SIM
20 {
21 
27 class cofdm_mod : public itpp::OFDM
28 {
29 private:
30  int NFFT;
31  int CP;
32  double scale;
33  cvec carriers;
34 
35 public:
36  cvec y0;
37 
39  {
40  NFFT = 256;
41  CP = 16;
42  OFDM::set_parameters(NFFT, CP, 1);
43  scale = std::sqrt(static_cast<double>(NFFT + CP)) / std::sqrt(static_cast<double>(NFFT));
44  y0.set_size(NFFT+CP);
45  carriers.set_size(NFFT);
46  };
47 
49  {
50  };
51 
55  void set_NFFT(int n);
56 
60  void set_CP(int cp);
61 
65  void set_scale(double s);
66 
70  void set_carriers(cvec x);
71 
75  int get_NFFT();
76 
80  int get_CP();
81 
85  double get_scale();
86 
90  cvec get_carriers();
91 
95  cvec get_symbol();
96 
102  cmat process(const bvec &ce, const cmat &x);
103 
104 };
105 
106 
107 }
108 #endif //SIM::cofdm_mod
COFDM modulator Core immediate functions SIM::cofdm_mod.set_carriers(), SIM::cofdm_mod.get_symbol() Core clocked functions SIM::cofdm_mod.process() .
Definition: sim_cofdm_mod.hpp:27
SIM layer implements low level simulation models with itpp base classes as operational types...
Definition: sim_amp.hpp:15
~cofdm_mod()
Definition: sim_cofdm_mod.hpp:48
Definition: _sci_assert.cpp:35
cvec y0
y0 - complex symbols - modulated carriers y0=[CP|INV_FFT(carriers)]
Definition: sim_cofdm_mod.hpp:36
cofdm_mod()
Definition: sim_cofdm_mod.hpp:38