35 .AddConstructor<YansErrorRateModel> ()
47 return log (val) / log (2.0);
52 double EbNo = snr * signalSpread / phyRate;
53 double z = sqrt (EbNo);
54 double ber = 0.5 * erfc (z);
61 double EbNo = snr * signalSpread / phyRate;
62 double z = sqrt ((1.5 *
Log2 (m) * EbNo) / (m - 1.0));
63 double z1 = ((1.0 - 1.0 / sqrt (m)) * erfc (z));
64 double z2 = 1 - pow ((1 - z1), 2.0);
65 double ber = z2 /
Log2 (m);
66 NS_LOG_INFO (
"Qam m=" << m <<
" rate=" << phyRate <<
" snr=" << snr <<
" ber=" << ber);
90 unsigned int dstart = (d + 1) / 2;
91 unsigned int dend = d;
94 for (
unsigned int i = dstart; i < dend; i++)
104 unsigned int dstart = d / 2 + 1;
105 unsigned int dend = d;
108 for (
unsigned int i = dstart; i < dend; i++)
112 pd += 0.5 *
Binomial (d / 2, ber, d);
134 uint32_t signalSpread, uint32_t phyRate,
135 uint32_t dFree, uint32_t adFree)
const
137 double ber =
GetBpskBer (snr, signalSpread, phyRate);
143 double pmu = adFree * pd;
144 pmu = std::min (pmu, 1.0);
145 double pms = pow (1 - pmu, nbits);
151 uint32_t signalSpread,
153 uint32_t m, uint32_t dFree,
154 uint32_t adFree, uint32_t adFreePlusOne)
const
156 double ber =
GetQamBer (snr, m, signalSpread, phyRate);
163 double pmu = adFree * pd;
166 pmu += adFreePlusOne * pd;
167 pmu = std::min (pmu, 1.0);
168 double pms = pow (1 - pmu, nbits);