26 #include "ns3/gnuplot.h" 27 #include "ns3/command-line.h" 28 #include "ns3/yans-error-rate-model.h" 29 #include "ns3/nist-error-rate-model.h" 30 #include "ns3/table-based-error-rate-model.h" 31 #include "ns3/wifi-tx-vector.h" 35 int main (
int argc,
char *argv[])
37 uint32_t FrameSize = 1500;
38 std::ofstream yansfile (
"yans-frame-success-rate-ax.plt");
39 std::ofstream nistfile (
"nist-frame-success-rate-ax.plt");
40 std::ofstream tablefile (
"table-frame-success-rate-ax.plt");
41 std::vector <std::string> modes;
43 modes.push_back (
"HeMcs0");
44 modes.push_back (
"HeMcs1");
45 modes.push_back (
"HeMcs2");
46 modes.push_back (
"HeMcs3");
47 modes.push_back (
"HeMcs4");
48 modes.push_back (
"HeMcs5");
49 modes.push_back (
"HeMcs6");
50 modes.push_back (
"HeMcs7");
51 modes.push_back (
"HeMcs8");
52 modes.push_back (
"HeMcs9");
53 modes.push_back (
"HeMcs10");
54 modes.push_back (
"HeMcs11");
57 cmd.AddValue (
"FrameSize",
"The frame size", FrameSize);
58 cmd.Parse (argc, argv);
69 for (uint32_t i = 0; i < modes.size (); i++)
71 std::cout << modes[i] << std::endl;
75 txVector.SetMode (modes[i]);
77 for (
double snr = -5.0; snr <= 40.0; snr += 0.1)
80 if (ps < 0.0 || ps > 1.0)
85 yansdataset.Add (snr, ps);
87 ps = nist->GetChunkSuccessRate (
WifiMode (modes[i]), txVector, std::pow (10.0, snr / 10.0), FrameSize * 8);
88 if (ps < 0.0 || ps > 1.0)
93 nistdataset.Add (snr, ps);
95 ps = table->GetChunkSuccessRate (
WifiMode (modes[i]), txVector, std::pow (10.0, snr / 10.0), FrameSize * 8);
96 if (ps < 0.0 || ps > 1.0)
101 tabledataset.Add (snr, ps);
109 yansplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
110 yansplot.
SetLegend (
"SNR(dB)",
"Frame Success Rate");
111 yansplot.
SetExtra (
"set xrange [-5:55]\n\ 113 set style line 1 linewidth 5\n\ 114 set style line 2 linewidth 5\n\ 115 set style line 3 linewidth 5\n\ 116 set style line 4 linewidth 5\n\ 117 set style line 5 linewidth 5\n\ 118 set style line 6 linewidth 5\n\ 119 set style line 7 linewidth 5\n\ 120 set style line 8 linewidth 5\n\ 121 set style line 9 linewidth 5\n\ 122 set style line 10 linewidth 5\n\ 123 set style line 11 linewidth 5\n\ 124 set style line 12 linewidth 5\n\ 125 set style increment user");
129 nistplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
130 nistplot.
SetLegend (
"SNR(dB)",
"Frame Success Rate");
131 nistplot.
SetExtra (
"set xrange [-5:55]\n\ 133 set style line 1 linewidth 5\n\ 134 set style line 2 linewidth 5\n\ 135 set style line 3 linewidth 5\n\ 136 set style line 4 linewidth 5\n\ 137 set style line 5 linewidth 5\n\ 138 set style line 6 linewidth 5\n\ 139 set style line 7 linewidth 5\n\ 140 set style line 8 linewidth 5\n\ 141 set style line 9 linewidth 5\n\ 142 set style line 10 linewidth 5\n\ 143 set style line 11 linewidth 5\n\ 144 set style line 12 linewidth 5\n\ 145 set style increment user");
150 tableplot.
SetTerminal (
"postscript eps color enh \"Times-BoldItalic\"");
151 tableplot.
SetLegend (
"SNR(dB)",
"Frame Success Rate");
152 tableplot.
SetExtra (
"set xrange [-5:55]\n\ 154 set style line 1 linewidth 5\n\ 155 set style line 2 linewidth 5\n\ 156 set style line 3 linewidth 5\n\ 157 set style line 4 linewidth 5\n\ 158 set style line 5 linewidth 5\n\ 159 set style line 6 linewidth 5\n\ 160 set style line 7 linewidth 5\n\ 161 set style line 8 linewidth 5\n\ 162 set style line 9 linewidth 5\n\ 163 set style line 10 linewidth 5\n\ 164 set style line 11 linewidth 5\n\ 165 set style line 12 linewidth 5\n\ 166 set style increment user");
Smart pointer class similar to boost::intrusive_ptr.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Class to represent a 2D points plot.
void AddDataset(const GnuplotDataset &dataset)
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
double GetChunkSuccessRate(WifiMode mode, const WifiTxVector &txVector, double snr, uint64_t nbits, uint8_t numRxAntennas=1, WifiPpduField field=WIFI_PPDU_FIELD_DATA, uint16_t staId=SU_STA_ID) const
This method returns the probability that the given 'chunk' of the packet will be successfully receive...
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream.
Parse command-line arguments.
void SetLegend(const std::string &xLegend, const std::string &yLegend)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetExtra(const std::string &extra)
void SetTerminal(const std::string &terminal)