#include "itcomm.h"
int main()
{
Real_Timer time;
int N=10000, M=16, k=needed_bits(M);
vec EbN0 = "0:2:16";
vec EN0ggr = inv_dB(EbN0)*k;
vec pb(EbN0.size());
QAM qam(M);
Array<BERC> berc(EbN0.size());
bvec transmitted_bits, received_bits;
cvec transmitted_symbols, received_symbols, noise;
transmitted_bits = randb(N*k);
qam.modulate_bits(transmitted_bits, transmitted_symbols);
randn_c(transmitted_symbols.size(), noise);
for (int i=0; i<EbN0.size(); i++) {
received_symbols = transmitted_symbols + sqrt(1.0/EN0ggr(i))*noise;
qam.demodulate_bits(received_symbols, received_bits);
berc(i).count(transmitted_bits, received_bits);
pb(i) = berc(i).get_errorrate();
}
cout << "SNR=" << EbN0 << endl;
cout << "pb=" << pb << endl;
}
syntax highlighted by Code2HTML, v. 0.9.1