IT++ Logo

spread.h

Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SourceForge Logo

Generated on Wed Jan 20 23:03:05 2010 for IT++ by Doxygen 1.6.2