IT++ Logo Newcom Logo

spread.h

Go to the documentation of this file.
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
SourceForge Logo

Generated on Sat Aug 25 23:40:27 2007 for IT++ by Doxygen 1.5.2