#include <spread.h>
Public Member Functions | |
Spread_2d () | |
Constructor. | |
Spread_2d (const vec &incodeI, const vec &incodeQ) | |
Constructor. | |
void | spread (const cvec &symbols, cvec &out) |
Spreading of signal. | |
cvec | spread (const cvec &symbols) |
Spreading of signal. | |
void | despread (const cvec &rec_signal, cvec &out, int timing) |
Despreading of signal. timing is the start position of the first symbol, given in number of samples. | |
cvec | despread (const cvec &rec_signal, int timing) |
Despreading of signal. timing is the start position of the first symbol, given in number of samples. | |
void | set_code (const vec &incodeI, const vec &incodeQ) |
Set the in-phase and the quadrature-phase spreading codes. | |
vec | get_codeI () |
Returns the in-phase spreading code. | |
vec | get_codeQ () |
Returns the quadrature-phase spreading code. | |
int | get_period () |
Get the period of the code (length of code vector). | |
Protected Attributes | |
Spread_1d | spreadI |
Spread_1d | spreadQ |
The spreading are done independently for the I and Q phases. That is real(symbols) are spread by the incodeI and imag(symbols) are spread by incodeQ.
Before despreading the phase should be corrected, that is the complex baseband signal should be multiplied by exp(j*PHIk), where PHIk is the phase of that user (and path).
Obeserve that the spreading is normalized so that the energy per bit is preserved before and after spreading (that is each symbol is multiplied with 1/sqrt
(N)). Hence, for the multicode case the energy is normalized for one symbol (code) but the transmitted signal consist of a sum of several signals.
Example: See Spread_1d
Spread_1d itpp::Spread_2d::spreadI [protected] |
The spreaders for the I and Q channels respectively
Referenced by despread(), get_codeI(), get_period(), set_code(), and spread().