diff --git a/lib/ftrsd/ftrsd_paper/fig_bodide.gnuplot b/lib/ftrsd/ftrsd_paper/fig_bodide.gnuplot index 75f3cba5c..386dfa971 100644 --- a/lib/ftrsd/ftrsd_paper/fig_bodide.gnuplot +++ b/lib/ftrsd/ftrsd_paper/fig_bodide.gnuplot @@ -13,8 +13,8 @@ set mxtics 2 set mytics 10 set grid set logscale y -plot [3:9] [1e-4:1] "bmdata.dat" using ($1+29.7):(1-$2) with linespoints pt 4 title 'BM', \ +plot [3:9] [1e-4:1] "bmdata.dat" using ($1+29.66):(1-$2) with linespoints pt 4 title 'BM', \ "bmtheory25.dat" using 1:3 with linespoints pt 5 title 'theory25', \ "bmtheory40.dat" using 1:3 with linespoints pt 5 title 'theory40', \ "bmtheory43.dat" using 1:3 with linespoints pt 5 title 'theory43', \ - "ftdata-100000.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 4 title 'FT' + "ftdata-100000.dat" using ($1+29.66):(1-$2) every ::1 with linespoints pt 4 title 'FT' diff --git a/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf b/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf index 2e903ace8..6c2319725 100644 Binary files a/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf and b/lib/ftrsd/ftrsd_paper/fig_psuccess.pdf differ diff --git a/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot b/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot index 6d4a10bc7..bff05333f 100644 --- a/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot +++ b/lib/ftrsd/ftrsd_paper/fig_wer.gnuplot @@ -13,7 +13,11 @@ set mxtics 2 set mytics 10 set grid set logscale y -plot [3:9] "ftdata-100000.dat" using ($1+29.1):(1-$2) with linespoints pt 7 title 'FT-100K', \ - "kvasd-11999.dat" using ($1+29.1):(1-$2) with linespoints pt 8 title 'KV-11.999', \ +plot [3:7] "ftdata-100000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-100K', \ + "ftdata-10000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-10K', \ + "ftdata-1000.dat" using ($1+29.1):(1-$2) with linespoints lt 1 pt 7 title 'FT-1K', \ + "kvasd-8.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-8', \ + "kvasd-12.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-12', \ + "kvasd-15.dat" using ($1+29.1):(1-$2) with linespoints lt 2 pt 8 title 'KV-15', \ "bmdata.dat" using ($1+29.1):(1-$2) with linespoints pt 7 title 'BM', \ "wer.lab" with labels diff --git a/lib/ftrsd/ftrsd_paper/fig_wer.pdf b/lib/ftrsd/ftrsd_paper/fig_wer.pdf index 1f42f5a3e..06465168f 100644 Binary files a/lib/ftrsd/ftrsd_paper/fig_wer.pdf and b/lib/ftrsd/ftrsd_paper/fig_wer.pdf differ diff --git a/lib/ftrsd/ftrsd_paper/fig_wer2.gnuplot b/lib/ftrsd/ftrsd_paper/fig_wer2.gnuplot index 19fcd3142..865aabae1 100644 --- a/lib/ftrsd/ftrsd_paper/fig_wer2.gnuplot +++ b/lib/ftrsd/ftrsd_paper/fig_wer2.gnuplot @@ -1,31 +1,24 @@ -# gnuplot script for "word error rate" figure +# gnuplot script for "Percent copy" figure # run: gnuplot fig_wer2.gnuplot # then: pdflatex fig_wer2.tex # -set term epslatex standalone size 16cm,10cm +set term epslatex standalone size 5in,5*2/3in set output "fig_wer2.tex" -set xlabel "$E_s/N_o$ (dB)" -set x2label "SNR in 2500 Hz (dB)" -set ylabel "WER" -#set autoscale xfix -#set autoscale x2fix +set xlabel "SNR in 2500 Hz Bandwidth (dB)" +set ylabel "Percent Copy" set style func linespoints -set key on top outside nobox +set key off set tics in set mxtics 2 set mytics 10 -set grid ytics -set logscale y -set x2tics out -set xtics nomirror -set mx2tics 2 -#set xrange [3:13] -#set x2range [(3-29.7):(13-29.7)] -set xrange [4:7.5] -set x2range [(4-29.7):(7.5-29.7)] -set yrange [0.001:1.0] -plot "ftdata-1000-rf.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 4 title "FT-1K-RF", \ -"ftdata-100-rf.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 5 title 'FT-100-RF', \ -"kvasd-7999-rf.dat" using ($1+29.7):(1-$2) every ::1 with linespoints pt 6 title 'KV-8-RF', \ -"kvasd-11999-rf.dat" using 1:(1-$2) every ::1 with linespoints pt 7 title 'KV-12-RF' axes x2y1 -#"bmdata-rf.dat" using 1:(1-$2) every ::1 with linespoints pt 8 title 'BM-RF' axes x2y1 +set grid +plot [-27:-22] [0:110] \ + "ftdata-100000.dat" using 1:(100*$2) with linespoints lt 1 pt 7 title 'FT-100K', \ + "ftdata-10000.dat" using 1:(100*$2) with linespoints lt 1 pt 7 title 'FT-10K', \ + "ftdata-1000.dat" using 1:(100*$2) with linespoints lt 1 pt 7 title 'FT-1K', \ + "ftdata-100.dat" using 1:(100*$2) with linespoints lt 1 pt 7 title 'FT-100', \ + "kvasd-8.dat" using 1:(100*$2) with linespoints lt 2 pt 8 title 'KV-8', \ + "kvasd-12.dat" using 1:(100*$2) with linespoints lt 2 pt 8 title 'KV-12', \ + "kvasd-15.dat" using 1:(100*$2) with linespoints lt 2 pt 8 title 'KV-15', \ + "bmdata.dat" using 1:(100*$2) with linespoints pt 11 title 'BM', \ + "wer2.lab" with labels diff --git a/lib/ftrsd/ftrsd_paper/ftdata-100-rf.dat b/lib/ftrsd/ftrsd_paper/ftdata-100-rf.dat deleted file mode 100644 index 9bac57643..000000000 --- a/lib/ftrsd/ftrsd_paper/ftdata-100-rf.dat +++ /dev/null @@ -1,9 +0,0 @@ -fspread0 0.2, FT (ntrials=100) --26.0 0.0072 --25.5 0.048 --25.0 0.17 --24.5 0.42 --24.0 0.68 --23.5 0.89 --23.0 0.979 --22.5 0.9936 diff --git a/lib/ftrsd/ftrsd_paper/ftdata-1000-rf.dat b/lib/ftrsd/ftrsd_paper/ftdata-1000-rf.dat deleted file mode 100644 index 9f5eafedf..000000000 --- a/lib/ftrsd/ftrsd_paper/ftdata-1000-rf.dat +++ /dev/null @@ -1,9 +0,0 @@ -fspread0 0.2, FT (ntrials=1000) --26.0 0. --25.5 0. --25.0 0.21 --24.5 0.41 --24.0 0.64 --23.5 0.81 --23.0 0.89 --22.5 0.95 diff --git a/lib/ftrsd/ftrsd_paper/ftdata-1000.dat b/lib/ftrsd/ftrsd_paper/ftdata-1000.dat index b16daca46..6add6d535 100644 --- a/lib/ftrsd/ftrsd_paper/ftdata-1000.dat +++ b/lib/ftrsd/ftrsd_paper/ftdata-1000.dat @@ -1,8 +1,9 @@ - snr psuccess ntrials 1000, ntotal<76, nhard<44 --25.5 0.089 --25.0 0.23 --24.5 0.52 + snr psuccess ntrials 1000, r6315 +-26.0 0.010 +-25.5 0.052 +-25.0 0.22 +-24.5 0.51 -24.0 0.80 --23.5 0.95 --23.0 0.9958 +-23.5 0.956 +-23.0 0.9958 x diff --git a/lib/ftrsd/ftrsd_paper/ftdata-10000.dat b/lib/ftrsd/ftrsd_paper/ftdata-10000.dat index 07f533d40..0c42e9336 100644 --- a/lib/ftrsd/ftrsd_paper/ftdata-10000.dat +++ b/lib/ftrsd/ftrsd_paper/ftdata-10000.dat @@ -1,10 +1,10 @@ - snr psuccess ntrials 10000, ntotal<76, nhard<44 + snr psuccess ntrials 10000 r6315 -26.5 0.004 x --26.0 0.03 --25.5 0.13 --25.0 0.38 --24.5 0.71 --24.0 0.91 --23.5 0.99 +-26.0 0.03 x +-25.5 0.107 +-25.0 0.353 +-24.5 0.653 +-24.0 0.913 +-23.5 0.983 -23.0 0.9987 x diff --git a/lib/ftrsd/ftrsd_paper/ftdata-100000.dat b/lib/ftrsd/ftrsd_paper/ftdata-100000.dat index 49db0c972..f262b0ea4 100644 --- a/lib/ftrsd/ftrsd_paper/ftdata-100000.dat +++ b/lib/ftrsd/ftrsd_paper/ftdata-100000.dat @@ -1,11 +1,12 @@ -snr psuccess 100000 trials, ntotal<76, nhard<44 --27.0 0.0 --26.5 0.007 --26.0 0.04 --25.5 0.16 --25.0 0.41 --24.5 0.75 --24.0 0.93700 --23.5 0.99000 --23.0 0.99954 +snr psuccess 100000 trials r6315 +-27.0 0.0 x +-26.5 0.007 x +-26.0 0.057 +-25.5 0.207 +-25.0 0.531 +-24.5 0.822 +-24.0 0.953 +-23.5 0.99423 +-23.0 0.99967 302956/303056 + diff --git a/lib/ftrsd/ftrsd_paper/ftrsd.lyx b/lib/ftrsd/ftrsd_paper/ftrsd.lyx index 5f3523913..bd85eefd5 100644 --- a/lib/ftrsd/ftrsd_paper/ftrsd.lyx +++ b/lib/ftrsd/ftrsd_paper/ftrsd.lyx @@ -2,7 +2,7 @@ \lyxformat 474 \begin_document \begin_header -\textclass paper +\textclass article \use_default_options true \maintain_unincluded_children false \language english @@ -75,8 +75,7 @@ \begin_body \begin_layout Title -A stochastic successive erasures soft-decision decoder for the JT65 (63,12) - Reed-Solomon code +Open Source Soft-Decision Decoder for the JT65 (63,12) Reed-Solomon code \end_layout \begin_layout Author @@ -104,7 +103,27 @@ y (KV) algebraic soft-decision decoder, licensed to K1JT and implemented \end_layout \begin_layout Section -Introduction +\begin_inset CommandInset label +LatexCommand label +name "sec:Introduction-and-Motivation" + +\end_inset + +Introduction and Motivation +\end_layout + +\begin_layout Standard +To be written... +\end_layout + +\begin_layout Section +\begin_inset CommandInset label +LatexCommand label +name "sec:JT65-messages-and" + +\end_inset + +JT65 messages and Reed Solomon Codes \end_layout \begin_layout Standard @@ -303,11 +322,11 @@ soft \begin_layout Section \begin_inset CommandInset label LatexCommand label -name "sec:You've-got-to" +name "sec:Statistical Framework" \end_inset -Do I feel lucky? +Statistical Framework \end_layout \begin_layout Standard @@ -1100,7 +1119,41 @@ An acceptable codeword with \end_layout \begin_layout Section -Theory and Simulations +\begin_inset CommandInset label +LatexCommand label +name "sec:Hinted-Decoding" + +\end_inset + +Hinted Decoding +\end_layout + +\begin_layout Standard +Write this... +\end_layout + +\begin_layout Section +\begin_inset CommandInset label +LatexCommand label +name "sec:Implementation-in-WSJT-X" + +\end_inset + +Implementation in WSJT-X +\end_layout + +\begin_layout Standard +Write this... +\end_layout + +\begin_layout Section +\begin_inset CommandInset label +LatexCommand label +name "sec:Theory,-Simulation,-and" + +\end_inset + +Decoder Performance Evaluation: Simulations and Real Data \end_layout \begin_layout Standard @@ -1341,7 +1394,7 @@ Number of trials needed to decode a received word versus Hamming distance \end_layout -\begin_layout Section +\begin_layout Subsection Comparison with Berlekamp-Massey and Koetter-Vardy \end_layout @@ -1518,15 +1571,6 @@ Deep Search \end_layout -\begin_layout Section -Hinted Decoding -\end_layout - -\begin_layout Standard -... - Still to come ... -\end_layout - \begin_layout Section Summary \end_layout @@ -1619,5 +1663,159 @@ key "key-5" Berlekamp-Massey decoder written by Phil Karn, http://www.ka9q.net/code/fec/ \end_layout +\begin_layout Section +\start_of_appendix +Signal to Noise Ratios +\end_layout + +\begin_layout Standard +The signal to noise ratio in a bandwidth, +\begin_inset Formula $B$ +\end_inset + +, that is at least as large as the bandwidth occupied by the signal is: +\begin_inset Formula +\begin{equation} +SNR_{B}=\frac{P_{s}}{N_{o}B}\label{eq:SNR} +\end{equation} + +\end_inset + +where +\begin_inset Formula $P_{s}$ +\end_inset + + is the signal power, +\begin_inset Formula $N_{o}$ +\end_inset + + is one-sided noise power spectral density, and +\begin_inset Formula $B$ +\end_inset + + is the bandwidth in Hz. + In amateur radio applications, digital modes are often compared based on + the SNR defined in a 2.5 kHz reference bandwidth, +\begin_inset Formula $SNR_{2.5\,\mathrm{kHz}}$ +\end_inset + +. + +\end_layout + +\begin_layout Standard +In the professional literature, decoder performance is characterized in + terms of +\begin_inset Formula $E_{b}/N_{o}$ +\end_inset + +, the ratio of the energy collected per information bit, +\begin_inset Formula $E_{b}$ +\end_inset + +, to the one-sided noise power spectral density, +\begin_inset Formula $N_{o}$ +\end_inset + +, or in terms of +\begin_inset Formula $E_{s}/N_{o}$ +\end_inset + +, the ratio of the energy collected per received symbol, +\begin_inset Formula $E_{s}$ +\end_inset + +, and +\begin_inset Formula $N_{o}$ +\end_inset + +. + Denote the duration of a channel symbol by +\begin_inset Formula $\tau_{s}$ +\end_inset + + (for JT65, +\begin_inset Formula $\tau_{s}=0.375\,\mathrm{s}$ +\end_inset + +). + Signal power is related to the energy per symbol by +\begin_inset Formula +\begin{equation} +P_{s}=E_{s}/\tau_{s},\label{eq:signal_power} +\end{equation} + +\end_inset + +The total energy in a received JT65 message consisting of +\begin_inset Formula $n=63$ +\end_inset + + channel symbols is +\begin_inset Formula $63E_{s}$ +\end_inset + +. + The energy collected for each of the 72 bits of information conveyed by + the message is then +\begin_inset Formula +\begin{equation} +E_{b}=\frac{63E_{s}}{72}=0.875E_{s.}\label{eq:Eb_Es} +\end{equation} + +\end_inset + +Using equations ( +\begin_inset CommandInset ref +LatexCommand ref +reference "eq:SNR" + +\end_inset + +)-( +\begin_inset CommandInset ref +LatexCommand ref +reference "eq:Eb_Es" + +\end_inset + +), +\begin_inset Formula $SNR_{2.5\,\mathrm{kHz}}$ +\end_inset + + can be written in terms of +\begin_inset Formula $E_{b}/N_{o}$ +\end_inset + + or +\begin_inset Formula $E_{s}/N_{o}$ +\end_inset + +: +\begin_inset Formula +\[ +SNR_{2.5\,\mathrm{kHz}}=1.08\times10^{-3}\frac{E_{s}}{N_{o}}=1.23\times10^{-3}\frac{E_{b}}{N_{o}}. +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +If all quantities are expressed in dB, then: +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +SNR_{2.5\,\mathrm{kHz}}=(E_{b}/N_{o})_{\mathrm{dB}}-29.66\,\mathrm{dB}=(E_{s}/N_{o})_{\mathrm{dB}}-29.10\,\mathrm{dB}. +\] + +\end_inset + + +\end_layout + \end_body \end_document diff --git a/lib/ftrsd/ftrsd_paper/kvasd-11999-rf.dat b/lib/ftrsd/ftrsd_paper/kvasd-11999-rf.dat deleted file mode 100644 index ba0e95663..000000000 --- a/lib/ftrsd/ftrsd_paper/kvasd-11999-rf.dat +++ /dev/null @@ -1,9 +0,0 @@ -kvasd with xlambda=11.999 and fspread=0.2 --26.0 0.020 --25.5 0.089 --25.0 0.26 5:12 --24.5 0.57 5:23 --24.0 0.83 5:30 --23.5 0.93 --23.0 0.986 --22.5 0.9952 diff --git a/lib/ftrsd/ftrsd_paper/kvasd-11999.dat b/lib/ftrsd/ftrsd_paper/kvasd-11999.dat deleted file mode 100644 index ea6a15518..000000000 --- a/lib/ftrsd/ftrsd_paper/kvasd-11999.dat +++ /dev/null @@ -1,8 +0,0 @@ -kvasd with xlambda=11.999 --26.0 0.013 --25.5 0.07 --25.0 0.24 --24.5 0.61 --24.0 0.86 --23.5 0.98 --23.0 0.9987 diff --git a/lib/ftrsd/ftrsd_paper/kvasd-12.dat b/lib/ftrsd/ftrsd_paper/kvasd-12.dat new file mode 100644 index 000000000..01b085ce3 --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/kvasd-12.dat @@ -0,0 +1,8 @@ +kvasd with xlambda=12.000 +-26.0 0.017 +-25.5 0.085 +-25.0 0.282 +-24.5 0.600 +-24.0 0.865 +-23.5 0.975 +-23.0 0.9988 diff --git a/lib/ftrsd/ftrsd_paper/kvasd-15.dat b/lib/ftrsd/ftrsd_paper/kvasd-15.dat new file mode 100644 index 000000000..49744d748 --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/kvasd-15.dat @@ -0,0 +1,9 @@ +kvasd with xlambda=15.000 +-26.5 0.0023 (based on 55 good in 23650 attempts) +-26.0 0.023 +-25.5 0.090 +-25.0 0.309 +-24.5 0.615 +-24.0 0.879 +-23.5 0.978 +-23.0 0.99918 (based on 100 missed in 122281 attempts!) diff --git a/lib/ftrsd/ftrsd_paper/kvasd-7999-rf.dat b/lib/ftrsd/ftrsd_paper/kvasd-7999-rf.dat deleted file mode 100644 index 0e71ea5f2..000000000 --- a/lib/ftrsd/ftrsd_paper/kvasd-7999-rf.dat +++ /dev/null @@ -1,8 +0,0 @@ -kvasd with xlambda=7.999 and fspread=0.2 --26.0 0.013 --25.5 0.066 --25.0 0.24 --24.5 0.52 --24.0 0.79 --23.5 0.934 --23.0 0.981 diff --git a/lib/ftrsd/ftrsd_paper/kvasd-7999.dat b/lib/ftrsd/ftrsd_paper/kvasd-7999.dat deleted file mode 100644 index 502c2a6c6..000000000 --- a/lib/ftrsd/ftrsd_paper/kvasd-7999.dat +++ /dev/null @@ -1,8 +0,0 @@ -kvasd with xlambda=7.999 AWGN --26.0 0.000 --25.5 0.00 --25.0 0.00 --24.5 0.00 --24.0 0.00 --23.5 0.00 --23.0 0.9979 diff --git a/lib/ftrsd/ftrsd_paper/kvasd-8.dat b/lib/ftrsd/ftrsd_paper/kvasd-8.dat new file mode 100644 index 000000000..00e9eb9ff --- /dev/null +++ b/lib/ftrsd/ftrsd_paper/kvasd-8.dat @@ -0,0 +1,8 @@ +kvasd with xlambda=8 AWGN +-26.0 0.008 +-25.5 0.061 +-25.0 0.233 +-24.5 0.539 +-24.0 0.847 +-23.5 0.966 +-23.0 0.9980 diff --git a/lib/ftrsd/ftrsd_paper/wer.lab b/lib/ftrsd/ftrsd_paper/wer.lab index 3c7ddce0c..e69de29bb 100644 --- a/lib/ftrsd/ftrsd_paper/wer.lab +++ b/lib/ftrsd/ftrsd_paper/wer.lab @@ -1,3 +0,0 @@ -5.2 0.018 FT -5.6 0.05 KV -7.5 0.05 BM \ No newline at end of file