00001 00030 #ifndef SPREAD_H 00031 #define SPREAD_H 00032 00033 #include <itpp/base/vec.h> 00034 #include <itpp/base/mat.h> 00035 00036 00037 namespace itpp 00038 { 00039 00100 class Spread_1d 00101 { 00102 public: 00104 Spread_1d() { } 00106 Spread_1d(const vec &incode); 00108 void spread(const vec &symbols, vec &out); 00110 vec spread(const vec &symbols) { vec out; spread(symbols, out); return out; } 00114 void despread(const vec &rec_signal, vec &out, int timing); 00118 vec despread(const vec &rec_signal, int timing) 00119 { vec out; despread(rec_signal, out, timing); return out; } 00121 void set_code(const vec &incode); 00123 vec get_code(); 00125 short get_period() { return N; } 00126 protected: 00128 vec code; 00130 short N; 00131 }; 00132 00153 class Spread_2d 00154 { 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: 00184 Spread_1d spreadI, spreadQ; 00186 }; 00187 00200 class Multicode_Spread_1d 00201 { 00202 public: 00204 Multicode_Spread_1d() { } 00206 Multicode_Spread_1d(const mat &incodes); 00208 vec spread(const vec &symbols); 00210 vec despread(const vec &receivedsignal, int timing); 00212 void set_codes(const mat &incodes); 00214 mat get_codes(); 00216 short get_period() { return N; } 00218 short get_nocodes() { return L; } 00219 protected: 00221 mat codes; 00223 short L; 00225 short N; 00226 }; 00227 00248 class Multicode_Spread_2d 00249 { 00250 public: 00252 Multicode_Spread_2d() { } 00254 Multicode_Spread_2d(const mat &incodesI, const mat &incodesQ); 00256 cvec spread(const cvec &symbols); 00258 cvec despread(const cvec &receivedsignal, int timing); 00265 void set_codes(const mat &incodesI, const mat &incodesQ); 00267 mat get_codesI(); 00269 mat get_codesQ(); 00271 short get_period() { return mcspreadI.get_period(); } 00272 protected: 00275 Multicode_Spread_1d mcspreadI, mcspreadQ; 00277 }; 00278 00279 } // namespace itpp 00280 00281 #endif // #ifndef SPREAD_H
Generated on Fri Jul 25 12:42:59 2008 for IT++ by Doxygen 1.5.4