better plot output, but not satisfied by fuzzy ouput of eps->png conversion
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 18 Mar 2017 02:20:44 +0000 (02:20 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 18 Mar 2017 02:20:44 +0000 (02:20 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3067 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/ldpc_short.m

index 48f62fba212ade292bef0a614114806678950347..9c850ec2a73b434c4c8b05a3919969409c4b0fc8 100644 (file)
@@ -31,7 +31,6 @@ function sim_out = run_sim(sim_in, HRA, Ntrials)
   packet_size = sim_in.packet_size;\r
   code        = sim_in.code;\r
   hf_en       = sim_in.hf_en;\r
-  diversity   = sim_in.diversity;\r
   Esvec       = sim_in.Esvec;\r
 \r
   if strcmp(code, 'golay')\r
@@ -207,18 +206,23 @@ endfunction
 \r
 function plot_curves(hf_en)\r
 \r
+  if hf_en\r
+    epslabel = 'hf';\r
+  else\r
+    epslabel = 'awgn';\r
+  end\r
+\r
   Ntrials = 500;\r
 \r
   sim_in.genie_Es    = 1;\r
   sim_in.packet_size = 28;\r
   sim_in.code        = 'ldpc';\r
   sim_in.hf_en       = hf_en;\r
-  sim_in.diversity   = 0;\r
 \r
   if hf_en\r
-    Esvec = -3:0.5:6\r
+    Esvec = 0:0.5:9\r
   else\r
-    Esvec = 0:0.5:6\r
+    Esvec = -3:0.5:3\r
   end\r
   sim_in.Esvec = Esvec;\r
 \r
@@ -237,11 +241,11 @@ function plot_curves(hf_en)
   sim_out6 = run_sim(sim_in, [], Ntrials*10);\r
 \r
   if hf_en\r
-    Ebvec_theory = 0.5:9;\r
+    Ebvec_theory = 2:0.5:12;\r
     EbNoLin = 10.^(Ebvec_theory/10);\r
     uncoded_BER_theory = 0.5.*(1-sqrt(EbNoLin./(EbNoLin+1)));\r
   else\r
-    Ebvec_theory = -2:0.5:6;\r
+    Ebvec_theory = 0:0.5:8;\r
     uncoded_BER_theory = 0.5*erfc(sqrt(10.^(Ebvec_theory/10)));\r
   end\r
 \r
@@ -261,12 +265,15 @@ function plot_curves(hf_en)
   semilogy(sim_out3.Ebvec, sim_out3.BERvec, 'c+-;rate 1/2 HRA 56 56;','markersize', 10, 'linewidth', 2)\r
   semilogy(sim_out4.Ebvec, sim_out4.BERvec, 'k+-;rate 2/3 HRA 56 28;','markersize', 10, 'linewidth', 2)\r
   semilogy(sim_out5.Ebvec, sim_out5.BERvec, 'm+-;rate 1/2 Golay (24,12);','markersize', 10, 'linewidth', 2)\r
-  semilogy(sim_out6.Ebvec, sim_out6.BERvec, 'bo-;rate 1/2 Diversity;','markersize', 10, 'linewidth', 2)\r
+  semilogy(sim_out6.Ebvec, sim_out6.BERvec, 'go-;rate 1/2 Diversity;','markersize', 10, 'linewidth', 2)\r
   hold off;\r
   xlabel('Eb/No')\r
   ylabel('BER')\r
   grid\r
   legend("boxoff");\r
+  axis([min(Ebvec_theory) max(Ebvec_theory) 1E-3 2E-1]);\r
+  epsname = sprintf("ldpc_short_%s_ber.eps", epslabel);\r
+  print('-deps', '-color', epsname)\r
 \r
   figure(2); clf;\r
   semilogy(Ebvec_theory,  uncoded_PER_theory, 'b+-;BPSK theory;','markersize', 10, 'linewidth', 2)\r
@@ -276,14 +283,62 @@ function plot_curves(hf_en)
   semilogy(sim_out3.Ebvec, sim_out3.PERvec, 'c+-;rate 1/2 HRA 56 56;','markersize', 10, 'linewidth', 2)\r
   semilogy(sim_out4.Ebvec, sim_out4.PERvec, 'k+-;rate 2/3 HRA 56 28;','markersize', 10, 'linewidth', 2)\r
   semilogy(sim_out5.Ebvec, sim_out5.PERvec, 'm+-;rate 1/2 Golay (24,12);','markersize', 10, 'linewidth', 2)\r
-  semilogy(sim_out6.Ebvec, sim_out6.PERvec, 'bo-;rate 1/2 Diversity;','markersize', 10, 'linewidth', 2)\r
+  semilogy(sim_out6.Ebvec, sim_out6.PERvec, 'go-;rate 1/2 Diversity;','markersize', 10, 'linewidth', 2)\r
   hold off;\r
   xlabel('Eb/No')\r
   ylabel('PER')\r
   grid\r
   legend("boxoff");\r
+  if hf_en\r
+    legend("location", "southwest");\r
+  end\r
+  axis([min(Ebvec_theory) max(Ebvec_theory) 1E-2 1]);\r
+  epsname = sprintf("ldpc_short_%s_per.eps", epslabel);\r
+  print('-deps', '-color', epsname)\r
+endfunction\r
+\r
+\r
+function run_single(bits, code = 'ldpc', channel = 'awgn', EbNodB, error_pattern_filename)\r
+\r
+  sim_in.code = code;\r
+  load HRA_112_112.txt\r
+\r
+  if strcmp(code, 'ldpc')\r
+    data_bits_per_frame = 112;\r
+    rate = 0.5;\r
+  end\r
+\r
+  if strcmp(code, 'diversity')\r
+    data_bits_per_frame = 7;\r
+    rate = 0.5;\r
+  end\r
+\r
+  Ntrials = bits/data_bits_per_frame;\r
+  sim_in.genie_Es    = 1;\r
+  sim_in.packet_size = 28;\r
+\r
+  if strcmp(channel, 'awgn')\r
+    sim_in.hf_en = 0;\r
+    sim_in.Esvec = EbNodB + 10*log10(rate);\r
+  else\r
+    sim_in.hf_en = 1;\r
+    sim_in.Esvec = EbNodB + 10*log10(rate);\r
+  end\r
+\r
+  sim_out = run_sim(sim_in, HRA_112_112, Ntrials);\r
+\r
+  if nargin == 5\r
+    fep = fopen(error_pattern_filename, "wb");\r
+    fwrite(fep, sim_out.error_positions, "short");\r
+    fclose(fep);\r
+  end\r
+\r
+  figure\r
+  plot(sim_out.error_positions);\r
+  axis([1 length(sim_out.error_positions) -0.2 1.2])\r
 endfunction\r
 \r
+\r
 % Start simulation here ----------------------------------------------\r
 \r
 rand('seed',1);\r
@@ -291,7 +346,13 @@ randn('seed',1);
 more off;\r
 format;\r
 init_cml;\r
+close all;\r
 \r
-plot_curves('hf');\r
+plot_curves(0);\r
+plot_curves(1);\r
 \r
+%run_single(700*10, 'ldpc', 'awgn', 2, 'awgn_2dB_ldpc.err')\r
+%run_single(700*10, 'diversity', 'awgn', 2, 'awgn_2dB_diversity.err')\r
+%run_single(700*10, 'ldpc', 'hf', 6, 'hf_6dB_ldpc.err')\r
+%run_single(700*10, 'diversity', 'hf', 6, 'hf_6dB_diversity.err')\r
 \r