301 double txPowerLin = pow (10, (txPowerDbm - 30)/10); |
301 double txPowerLin = pow (10, (txPowerDbm - 30)/10); |
302 double ktDbm = -174; // reference LTE noise PSD |
302 double ktDbm = -174; // reference LTE noise PSD |
303 double noisePowerDbm = ktDbm + 10 * log10 (25 * 180000); // corresponds to kT*bandwidth in linear units |
303 double noisePowerDbm = ktDbm + 10 * log10 (25 * 180000); // corresponds to kT*bandwidth in linear units |
304 double receiverNoiseFigureDb = 9.0; // default UE noise figure |
304 double receiverNoiseFigureDb = 9.0; // default UE noise figure |
305 double noiseLin = pow (10, (noisePowerDbm-30+receiverNoiseFigureDb)/10); |
305 double noiseLin = pow (10, (noisePowerDbm-30+receiverNoiseFigureDb)/10); |
306 double loss[] = {81.0214, 134.038391, 144.190675}; |
306 double loss[] = {81.021418, 134.038391, 144.190675}; |
307 double dist[] = {100.0, 500.0, 1500}; |
307 double dist[] = {100.0, 500.0, 1500}; |
308 |
308 |
309 int numOfTests = sizeof (loss) / sizeof (double); |
309 int numOfTests = sizeof (loss) / sizeof (double); |
310 for ( int i = 0 ; i < numOfTests; i++ ) |
310 for ( int i = 0 ; i < numOfTests; i++ ) |
311 { |
311 { |
312 // double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb; |
312 // double lossDb = txPowerDbm - snrEfficiencyMcs[i].snrDb - noisePowerDbm - receiverNoiseFigureDb; |
313 double sinrLin = (txPowerLin*(pow(10, loss[i]/10))) / noiseLin; |
313 double sinrLin = (txPowerLin/(pow(10, loss[i]/10))) / noiseLin; |
314 // double sinrDb = txPowerDbm- noisePowerDbm - receiverNoiseFigureDb - loss[i]; |
314 // double sinrDb = txPowerDbm- noisePowerDbm - receiverNoiseFigureDb - loss[i]; |
315 double sinrDb = 10*log10(sinrLin); |
315 double sinrDb = 10*log10(sinrLin); |
316 NS_LOG_INFO (" Ptx " << txPowerDbm << " Pn " << noisePowerDbm << " Fn " << receiverNoiseFigureDb << " Pl " << loss[i] << " dist " << dist[i]); |
316 NS_LOG_INFO (" Ptx " << txPowerDbm << " Pn " << noisePowerDbm << " Fn " << receiverNoiseFigureDb << " Pl " << loss[i] << " dist " << dist[i]); |
317 std::ostringstream name; |
317 std::ostringstream name; |
318 name << " snr= " << sinrDb << " dB, " |
318 name << " snr= " << sinrDb << " dB, " |