itpp::Spread_1d Class Reference
Communications Module » Digital Modulation

Spreading of float symbols to float output. More...

`#include <itpp/comm/spread.h>`

## Public Member Functions

| Spread_1d ()
| Constructor.
| Spread_1d (const vec &incode)
| Constructor.
void | spread (const vec &symbols, vec &out)
| Spreading of signal return i out.
vec | spread (const vec &symbols)
| Spreading of signal.
void | despread (const vec &rec_signal, vec &out, int timing)
| Despreading of signal. timing is the start position of the first symbol, given in number of samples.
vec | despread (const vec &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 &incode)
| Set the spreading code used for spreading.
vec | get_code ()
| Returns the spreading code used.
int | get_period ()
| Get the period of the code (length of code vector).

## Protected Attributes

vec | code
| The spreading code.
int | N
| The spreading factor.

## Detailed Description

Spreading of float symbols to float output.

Spreading block for generation of 1-dimensional DS-CDMA signals Useful in the simulation of DS-CDMA systems on chip level or upsampled chip level.

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.

Four different classes exist:

- Spread_1d for 1-dimensional symbols (e.g. BPSK).
- Spread_2d for 2-dimensional symbols (e.g. QPSK).

For multicode transmission, that is each user uses several codes in parallel to transmit data, there exist

- Multicode_Spread_1d for 1-dimensional symbols.
- Multicode_Spread_2d for 2-dimensional symbols.

Example:

#include "itpp/itcomm.h"
int main() {
//Generate the spreading code you want to use.
vec spreading_code = "-1 1 -1 1";
//Initiate th Spreading class
Spread_1d spread_1d(spreading_code);
//Generate the symbols to transmitt
bvec transmitted_bits = randb(10);
BPSK bpsk;
vec transmitted_symbols = bpsk.modulate_bits(transmitted_bits);
//Spread the symbols
vec transmitted_signal = spread_1d.spread(transmitted_symbols);
//Generate the received signal
vec received_signal = transmitted_signal;
//Despread the received signal
vec received_symbols = spread_1d.despread(received_signal,0);
//demodulate the bits
bvec received_bits = bpsk.demodulate_bits(received_symbols);
}

Definition at line 99 of file spread.h.

The documentation for this class was generated from the following files:

- itpp/comm/spread.h
- itpp/comm/spread.cpp

itpp::randb
bin randb(void)
Generates a random bit (equally likely 0s and 1s)
Definition: random.h:793
itpp::Spread_1d::Spread_1d
Spread_1d()
Constructor.
Definition: spread.h:103
itcomm.h
Include file for the IT++ communications module.

Generated on Mon Mar 23 2020 06:18:03 for IT++ by Doxygen 1.8.17