7 std::vector<unsigned char>
data_gen(
unsigned int nBits)
9 std::vector<unsigned char> bits;
11 for(
unsigned int i = 0; i < nBits;i++){
12 temp = (((rand()%2) - 0.5)*2.0);
13 bits.push_back( temp > 0.0 ? 0x01 : 0x00);
19 std::vector<double>
randn(
double mean,
double variance,
unsigned int length)
23 std::vector<double> awgn;
25 for (
unsigned int i = 0; i < length; i++)
27 double U1 = ((double)rand()/(double)RAND_MAX);
28 double U2 = ((double)rand()/(double)RAND_MAX);
30 double R = sqrt(-2*variance*log(U1));
31 double theta = 2*M_PI*U2;
33 awgn.push_back( mean + R*cos(theta));
40 std::vector<double>
bpsk(std::vector<unsigned char> data)
42 std::vector<double> signal;
43 for(
unsigned int i = 0; i < data.size();i++)
44 signal.push_back((data[i] > 0) ? 1.0000 : -1.0000);
48 std::vector<double>
awgn_channel(std::vector<double> signal,
double snr,
double code_rate,
double &sigma)
50 std::vector<double> noisy_signal;
51 std::vector<double> awgn =
randn(0,1,signal.size());
52 double N0 = pow(10.0, -snr / 10.0) / code_rate;
53 sigma = sqrt(N0 / 2.0);
54 for(
unsigned int i = 0; i < signal.size();i++)
56 noisy_signal.push_back(signal[i] + sigma*awgn[i]);
61 int ber(std::vector<unsigned char> tx,std::vector<unsigned char> rx )
63 assert(tx.size() == rx.size());
65 for(
unsigned int i = 0; i<tx.size();i++)
73 std::vector<unsigned char>
sliceLogAPP(std::vector<double> logapp)
75 std::vector<unsigned char> bits;
76 for(
unsigned int i = 0; i < logapp.size(); i++)
77 bits.push_back(logapp[i] > 0.0 ? 0x00 : 0x01);
std::vector< unsigned char > data_gen(unsigned int nBits)
Definition: comm.h:7
int ber(std::vector< unsigned char > tx, std::vector< unsigned char > rx)
Definition: comm.h:61
std::vector< double > bpsk(std::vector< unsigned char > data)
Definition: comm.h:40
std::vector< double > awgn_channel(std::vector< double > signal, double snr, double code_rate, double &sigma)
Definition: comm.h:48
double mean(double *input, unsigned int length)
std::vector< unsigned char > sliceLogAPP(std::vector< double > logapp)
Definition: comm.h:73
std::vector< double > randn(double mean, double variance, unsigned int length)
Definition: comm.h:19