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
\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
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
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
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
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