00001 00033 #ifndef SPREAD_H 00034 #define SPREAD_H 00035 00036 #include <itpp/base/vec.h> 00037 #include <itpp/base/mat.h> 00038 00039 00040 namespace itpp { 00041 00102 class Spread_1d { 00103 public: 00105 Spread_1d() { } 00107 Spread_1d(const vec &incode); 00109 void spread(const vec &symbols, vec &out); 00111 vec spread(const vec &symbols) { vec out; spread(symbols, out); return out; } 00115 void despread(const vec &rec_signal, vec &out, int timing); 00119 vec despread(const vec &rec_signal, int timing) 00120 { vec out; despread(rec_signal, out, timing); return out; } 00122 void set_code(const vec &incode); 00124 vec get_code(); 00126 short get_period() { return N; } 00127 protected: 00129 vec code; 00131 short N; 00132 }; 00133 00154 class Spread_2d { 00155 public: 00157 Spread_2d() { } 00159 Spread_2d(const vec &incodeI, const vec &incodeQ); 00161 void spread(const cvec &symbols, cvec &out); 00163 cvec spread(const cvec &symbols) { cvec out; spread(symbols, out); return out; } 00167 void despread(const cvec &rec_signal, cvec &out, int timing); 00171 cvec despread(const cvec &rec_signal, int timing) 00172 { cvec out; despread(rec_signal, out, timing); return out; } 00174 void set_code(const vec &incodeI, const vec &incodeQ); 00176 vec get_codeI(); 00178 vec get_codeQ(); 00180 short get_period() { return spreadI.get_period(); } 00181 protected: 00183 Spread_1d spreadI, spreadQ; 00184 }; 00185 00198 class Multicode_Spread_1d { 00199 public: 00201 Multicode_Spread_1d() { } 00203 Multicode_Spread_1d(const mat &incodes); 00205 vec spread(const vec &symbols); 00207 vec despread(const vec &receivedsignal, int timing); 00209 void set_codes(const mat &incodes); 00211 mat get_codes(); 00213 short get_period() { return N; } 00215 short get_nocodes() { return L; } 00216 protected: 00218 mat codes; 00220 short L; 00222 short N; 00223 }; 00224 00245 class Multicode_Spread_2d { 00246 public: 00248 Multicode_Spread_2d() { } 00250 Multicode_Spread_2d(const mat &incodesI, const mat &incodesQ); 00252 cvec spread(const cvec &symbols); 00254 cvec despread(const cvec &receivedsignal, int timing); 00261 void set_codes(const mat &incodesI, const mat &incodesQ); 00263 mat get_codesI(); 00265 mat get_codesQ(); 00267 short get_period() { return mcspreadI.get_period(); } 00268 protected: 00270 Multicode_Spread_1d mcspreadI, mcspreadQ; 00271 }; 00272 00273 } // namespace itpp 00274 00275 #endif // #ifndef SPREAD_H
Generated on Fri Jun 8 01:07:13 2007 for IT++ by Doxygen 1.5.2