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 00099 class Spread_1d { 00100 public: 00102 Spread_1d() { } 00104 Spread_1d(const vec &incode); 00106 void spread(const vec &symbols, vec &out); 00108 vec spread(const vec &symbols) { vec out; spread(symbols, out); return out; } 00112 void despread(const vec &rec_signal, vec &out, int timing); 00116 vec despread(const vec &rec_signal, int timing) 00117 { vec out; despread(rec_signal, out, timing); return out; } 00119 void set_code(const vec &incode); 00121 vec get_code(); 00123 short get_period() { return N; } 00124 protected: 00126 vec code; 00128 short N; 00129 }; 00130 00151 class Spread_2d { 00152 public: 00154 Spread_2d() { } 00156 Spread_2d(const vec &incodeI, const vec &incodeQ); 00158 void spread(const cvec &symbols, cvec &out); 00160 cvec spread(const cvec &symbols) { cvec out; spread(symbols, out); return out; } 00164 void despread(const cvec &rec_signal, cvec &out, int timing); 00168 cvec despread(const cvec &rec_signal, int timing) 00169 { cvec out; despread(rec_signal, out, timing); return out; } 00171 void set_code(const vec &incodeI, const vec &incodeQ); 00173 vec get_codeI(); 00175 vec get_codeQ(); 00177 short get_period() { return spreadI.get_period(); } 00178 protected: 00181 Spread_1d spreadI, spreadQ; 00183 }; 00184 00197 class Multicode_Spread_1d { 00198 public: 00200 Multicode_Spread_1d() { } 00202 Multicode_Spread_1d(const mat &incodes); 00204 vec spread(const vec &symbols); 00206 vec despread(const vec &receivedsignal, int timing); 00208 void set_codes(const mat &incodes); 00210 mat get_codes(); 00212 short get_period() { return N; } 00214 short get_nocodes() { return L; } 00215 protected: 00217 mat codes; 00219 short L; 00221 short N; 00222 }; 00223 00244 class Multicode_Spread_2d { 00245 public: 00247 Multicode_Spread_2d() { } 00249 Multicode_Spread_2d(const mat &incodesI, const mat &incodesQ); 00251 cvec spread(const cvec &symbols); 00253 cvec despread(const cvec &receivedsignal, int timing); 00260 void set_codes(const mat &incodesI, const mat &incodesQ); 00262 mat get_codesI(); 00264 mat get_codesQ(); 00266 short get_period() { return mcspreadI.get_period(); } 00267 protected: 00270 Multicode_Spread_1d mcspreadI, mcspreadQ; 00272 }; 00273 00274 } // namespace itpp 00275 00276 #endif // #ifndef SPREAD_H
Generated on Sun Dec 9 17:38:47 2007 for IT++ by Doxygen 1.5.4