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 
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
SourceForge Logo

Generated on Sat Apr 19 10:41:56 2008 for IT++ by Doxygen 1.5.5