examples, internet, prop, spect, uan: Cache math functions and frequently used variables
This commit is contained in:
@@ -35,7 +35,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream file("frame-success-rate-dsss.plt");
|
||||
|
||||
const std::vector<std::string> modes{
|
||||
@@ -46,7 +46,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot plot = Gnuplot("frame-success-rate-dsss.eps");
|
||||
@@ -56,27 +56,27 @@ main(int argc, char* argv[])
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
WifiTxVector txVector;
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset dataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (double snr = -10.0; snr <= 20.0; snr += 0.1)
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset dataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -10.0; snrDb <= 20.0; snrDb += 0.1)
|
||||
{
|
||||
double psYans = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
double psYans = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (psYans < 0.0 || psYans > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
double psNist = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double psNist = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (psNist < 0.0 || psNist > 1.0)
|
||||
{
|
||||
std::cout << psNist << std::endl;
|
||||
@@ -87,10 +87,7 @@ main(int argc, char* argv[])
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
double psTable = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double psTable = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (psTable < 0.0 || psTable > 1.0)
|
||||
{
|
||||
std::cout << psTable << std::endl;
|
||||
@@ -101,7 +98,7 @@ main(int argc, char* argv[])
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
dataset.Add(snr, psYans);
|
||||
dataset.Add(snrDb, psYans);
|
||||
}
|
||||
|
||||
plot.AddDataset(dataset);
|
||||
|
||||
@@ -86,66 +86,61 @@ main(int argc, char* argv[])
|
||||
mode << format << "Mcs" << +endMcs;
|
||||
modes.push_back(mode.str());
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= (endMcs * 5); snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= (endMcs * 5); snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
size);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, size);
|
||||
if (ps < 0 || ps > 1)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, 1 - ps);
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
size);
|
||||
yansdataset.Add(snrDb, 1 - ps);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, size);
|
||||
if (ps < 0 || ps > 1)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, 1 - ps);
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
size);
|
||||
nistdataset.Add(snrDb, 1 - ps);
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, size);
|
||||
if (ps < 0 || ps > 1)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, 1 - ps);
|
||||
tabledataset.Add(snrDb, 1 - ps);
|
||||
}
|
||||
|
||||
if (tableErrorModelEnabled)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Table-" << modes[i];
|
||||
ss << "Table-" << mode;
|
||||
tabledataset.SetTitle(ss.str());
|
||||
plot.AddDataset(tabledataset);
|
||||
}
|
||||
if (yansErrorModelEnabled)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Yans-" << modes[i];
|
||||
ss << "Yans-" << mode;
|
||||
yansdataset.SetTitle(ss.str());
|
||||
plot.AddDataset(yansdataset);
|
||||
}
|
||||
if (nistErrorModelEnabled)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Nist-" << modes[i];
|
||||
ss << "Nist-" << mode;
|
||||
nistdataset.SetTitle(ss.str());
|
||||
plot.AddDataset(nistdataset);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream yansfile("yans-frame-success-rate-be.plt");
|
||||
std::ofstream nistfile("nist-frame-success-rate-be.plt");
|
||||
std::ofstream tablefile("table-frame-success-rate-be.plt");
|
||||
@@ -60,7 +60,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot yansplot = Gnuplot("yans-frame-success-rate-be.eps");
|
||||
@@ -72,48 +72,45 @@ main(int argc, char* argv[])
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
WifiTxVector txVector;
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= 55.0; snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= 55.0; snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, ps);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, ps);
|
||||
yansdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, ps);
|
||||
nistdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snrDb, ps);
|
||||
}
|
||||
|
||||
yansplot.AddDataset(yansdataset);
|
||||
|
||||
@@ -35,7 +35,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream yansfile("yans-frame-success-rate-ax.plt");
|
||||
std::ofstream nistfile("nist-frame-success-rate-ax.plt");
|
||||
std::ofstream tablefile("table-frame-success-rate-ax.plt");
|
||||
@@ -56,7 +56,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot yansplot = Gnuplot("yans-frame-success-rate-ax.eps");
|
||||
@@ -68,48 +68,45 @@ main(int argc, char* argv[])
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
WifiTxVector txVector;
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= 40.0; snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= 40.0; snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, ps);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, ps);
|
||||
yansdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, ps);
|
||||
nistdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snrDb, ps);
|
||||
}
|
||||
|
||||
yansplot.AddDataset(yansdataset);
|
||||
|
||||
@@ -35,7 +35,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream yansfile("yans-frame-success-rate-n.plt");
|
||||
std::ofstream nistfile("nist-frame-success-rate-n.plt");
|
||||
std::ofstream tablefile("table-frame-success-rate-n.plt");
|
||||
@@ -52,7 +52,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot yansplot = Gnuplot("yans-frame-success-rate-n.eps");
|
||||
@@ -64,48 +64,45 @@ main(int argc, char* argv[])
|
||||
Ptr<NistErrorRateModel> nist = CreateObject<NistErrorRateModel>();
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= 30.0; snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= 30.0; snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, ps);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, ps);
|
||||
yansdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, ps);
|
||||
nistdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snrDb, ps);
|
||||
}
|
||||
|
||||
yansplot.AddDataset(yansdataset);
|
||||
|
||||
@@ -37,7 +37,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream yansfile("yans-frame-success-rate-ofdm.plt");
|
||||
std::ofstream nistfile("nist-frame-success-rate-ofdm.plt");
|
||||
std::ofstream tablefile("table-frame-success-rate-ofdm.plt");
|
||||
@@ -54,7 +54,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot yansplot = Gnuplot("yans-frame-success-rate-ofdm.eps");
|
||||
@@ -66,48 +66,45 @@ main(int argc, char* argv[])
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
WifiTxVector txVector;
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= 30.0; snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= 30.0; snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, ps);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, ps);
|
||||
yansdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, ps);
|
||||
nistdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snrDb, ps);
|
||||
}
|
||||
|
||||
yansplot.AddDataset(yansdataset);
|
||||
|
||||
@@ -36,7 +36,7 @@ using namespace ns3;
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
uint32_t FrameSize = 1500; // bytes
|
||||
uint32_t frameSizeBytes = 1500;
|
||||
std::ofstream yansfile("yans-frame-success-rate-ac.plt");
|
||||
std::ofstream nistfile("nist-frame-success-rate-ac.plt");
|
||||
std::ofstream tablefile("table-frame-success-rate-ac.plt");
|
||||
@@ -54,7 +54,7 @@ main(int argc, char* argv[])
|
||||
};
|
||||
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", FrameSize);
|
||||
cmd.AddValue("FrameSize", "The frame size in bytes", frameSizeBytes);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Gnuplot yansplot = Gnuplot("yans-frame-success-rate-ac.eps");
|
||||
@@ -66,48 +66,45 @@ main(int argc, char* argv[])
|
||||
Ptr<TableBasedErrorRateModel> table = CreateObject<TableBasedErrorRateModel>();
|
||||
WifiTxVector txVector;
|
||||
|
||||
for (uint32_t i = 0; i < modes.size(); i++)
|
||||
uint32_t frameSizeBits = frameSizeBytes * 8;
|
||||
|
||||
for (const auto& mode : modes)
|
||||
{
|
||||
std::cout << modes[i] << std::endl;
|
||||
Gnuplot2dDataset yansdataset(modes[i]);
|
||||
Gnuplot2dDataset nistdataset(modes[i]);
|
||||
Gnuplot2dDataset tabledataset(modes[i]);
|
||||
txVector.SetMode(modes[i]);
|
||||
std::cout << mode << std::endl;
|
||||
Gnuplot2dDataset yansdataset(mode);
|
||||
Gnuplot2dDataset nistdataset(mode);
|
||||
Gnuplot2dDataset tabledataset(mode);
|
||||
txVector.SetMode(mode);
|
||||
|
||||
for (double snr = -5.0; snr <= 30.0; snr += 0.1)
|
||||
WifiMode wifiMode(mode);
|
||||
|
||||
for (double snrDb = -5.0; snrDb <= 30.0; snrDb += 0.1)
|
||||
{
|
||||
double ps = yans->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
yansdataset.Add(snr, ps);
|
||||
double snr = std::pow(10.0, snrDb / 10.0);
|
||||
|
||||
ps = nist->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
double ps = yans->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
nistdataset.Add(snr, ps);
|
||||
yansdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(WifiMode(modes[i]),
|
||||
txVector,
|
||||
std::pow(10.0, snr / 10.0),
|
||||
FrameSize * 8);
|
||||
ps = nist->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snr, ps);
|
||||
nistdataset.Add(snrDb, ps);
|
||||
|
||||
ps = table->GetChunkSuccessRate(wifiMode, txVector, snr, frameSizeBits);
|
||||
if (ps < 0.0 || ps > 1.0)
|
||||
{
|
||||
// error
|
||||
exit(1);
|
||||
}
|
||||
tabledataset.Add(snrDb, ps);
|
||||
}
|
||||
|
||||
yansplot.AddDataset(yansdataset);
|
||||
|
||||
Reference in New Issue
Block a user