diff --git a/lib/ldpc/jtmode_codes/160-80-sf4.results b/lib/ldpc/jtmode_codes/160-80-sf4.results index d63e6bb2b..97e214613 100644 --- a/lib/ldpc/jtmode_codes/160-80-sf4.results +++ b/lib/ldpc/jtmode_codes/160-80-sf4.results @@ -1,4 +1,4 @@ -sf4 160,80 ldpc, Eb/N0_dB, ngood, nundet, 10^6 trials +sf4 160,80 ldpc 2x3/8x4 seed=3, Eb/N0_dB, ngood, nundet, 10^6 trials columns 2,3 decoder uses variable sigma, columns 4,5 decoder uses fixed sigma=0.9 -0.5 2906 0 10862 5 0.0 18899 1 34663 6 diff --git a/lib/ldpc/jtmode_codes/compare.lab b/lib/ldpc/jtmode_codes/compare.lab index cfab60b59..a90fc637e 100644 --- a/lib/ldpc/jtmode_codes/compare.lab +++ b/lib/ldpc/jtmode_codes/compare.lab @@ -1,2 +1,4 @@ -5.1 0.005 "(198,72) JTMSK" -3.1 0.0003 "(160,80) LDPC" +3.9 0.15 "(198,72) JTMSK" +2.7 0.003 "(174,87) LDPC" +5.6 0.00003 "(160,80) LDPC" +5.6 0.00008 "(140,80) LDPC" diff --git a/lib/ldpc/jtmode_codes/fig_compare.gnuplot b/lib/ldpc/jtmode_codes/fig_compare.gnuplot index 73bec798a..8ef39c12e 100644 --- a/lib/ldpc/jtmode_codes/fig_compare.gnuplot +++ b/lib/ldpc/jtmode_codes/fig_compare.gnuplot @@ -15,11 +15,13 @@ set logscale y plot [-1:6] [1e-6:1] \ "160-80-sf4.results" using 1:(1000000-$2)/1000000 with linespoints lt 2 lw 2 pt 2, \ "160-80-sf4.results" using 1:($3/1000000) with linespoints lt 2 lw 2 pt 2, \ - "160-80-sf4.results" using 1:(1000000-$4)/1000000 with linespoints lt 3 lw 2 pt 4, \ - "160-80-sf4.results" using 1:($5/1000000) with linespoints lt 2 lw 3 pt 4, \ - "ldpc-144-72-sf2.results" using 1:(1000000-$2)/1000000 with linespoints lt 3 lw 2 pt 5, \ - "ldpc-144-72-sf2.results" using 1:($3/1000000) with linespoints lt 3 lw 2 pt 5, \ - "jtmskcode.results" using 1:(1000000-$4)/1000000 with linespoints lt 1 lw 2 pt 7, \ + "jtmskcode.results" using 1:(100000-$2)/100000 with linespoints lt 1 lw 2 pt 7, \ "jtmskcode.results" using 1:($5/1000000) with linespoints lt 1 lw 2 pt 7, \ + "140-80-sf5.results" using 1:(100000-$2)/100000 with linespoints lt 4 lw 2 pt 4, \ + "140-80-sf5.results" using 1:($3/100000) with linespoints lt 4 lw 2 pt 4, \ + "174-87-sf6.results" using 1:(1000000-$2)/1000000 with linespoints lt 5 lw 2 pt 5, \ + "174-87-sf6.results" using 1:($3/1000000) with linespoints lt 5 lw 2 pt 5, \ "compare.lab" with labels exit +# "160-80-sf4.results" using 1:(1000000-$4)/1000000 with linespoints lt 3 lw 2 pt 4, \ +# "160-80-sf4.results" using 1:($5/1000000) with linespoints lt 2 lw 3 pt 4, \ diff --git a/lib/ldpc/jtmode_codes/jtmskcode.results b/lib/ldpc/jtmode_codes/jtmskcode.results index 96bdbfbea..740f533b7 100644 --- a/lib/ldpc/jtmode_codes/jtmskcode.results +++ b/lib/ldpc/jtmode_codes/jtmskcode.results @@ -1,5 +1,5 @@ rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials --0.50 1470 4 +-0.50 1470 4 0.00 4403 2 43968 30 0.50 11167 2 111824 33 1.00 24082 1 238157 21 @@ -7,7 +7,7 @@ rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials 2.00 63417 0 634824 14 2.50 81290 1 812206 2 3.00 92388 0 924507 2 - 3.50 97560 0 - 4.00 99390 0 - 4.50 99864 0 - 5.00 99977 0 + 3.50 97560 0 975836 0 + 4.00 99390 0 993832 0 + 4.50 99864 0 998695 0 + 5.00 99977 0 999771 0 diff --git a/lib/ldpc/jtmode_codes/ldpc-160-80 b/lib/ldpc/jtmode_codes/ldpc-160-80 deleted file mode 100755 index a869650cf..000000000 --- a/lib/ldpc/jtmode_codes/ldpc-160-80 +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# this script characterizes a single code over a narrow range of Eb/No -# note relationship between noise standard deviation, sigma, and Eb/No: -# Eb/No = 1/(2*R*sigma^2) -# If R=1/2, then Eb/No = 1/sigma^2 Right? Check this. - -set -e # Stop if an error occurs -set -v # Echo commands as they are read - -#make-ldpc ldpc-160-80.pchk 80 160 3 evenboth 2x3/8x4 no4cycle - -cp ldpc-160-80-2x3-8x4-sf4.pchk ldpc-160-80.pchk -make-gen ldpc-160-80.pchk ldpc-160-80.gen dense -rand-src ldpc-160-80.src 1 80x1000000 -encode ldpc-160-80.pchk ldpc-160-80.gen ldpc-160-80.src \ - ldpc-160-80.enc - -rate=0.5 -for i in `seq -1 10`; -do - db=$(echo "scale=5; $i/2.0" | bc) - ebno=$(echo "scale=5; e(0.1*$db*l(10.0))" | bc -l) - sigma=$(echo "scale=5; 1/sqrt(2*$rate*$ebno)" | bc) - echo db $db ebno $ebno sigma $sigma - - transmit ldpc-160-80.enc ldpc-160-80.rec 1 awgn $sigma - decode ldpc-160-80.pchk ldpc-160-80.rec ldpc-160-80.dec awgn 0.9\ - prprp 250 - verify ldpc-160-80.pchk ldpc-160-80.dec ldpc-160-80.gen \ - ldpc-160-80.src - -done diff --git a/lib/ldpc/jtmode_codes/ldpc-174-87-sf6.pchk b/lib/ldpc/jtmode_codes/ldpc-174-87-sf6.pchk new file mode 100644 index 000000000..f6bd06deb Binary files /dev/null and b/lib/ldpc/jtmode_codes/ldpc-174-87-sf6.pchk differ diff --git a/lib/ldpc/jtmode_codes/ldpc-search b/lib/ldpc/jtmode_codes/ldpc-search new file mode 100755 index 000000000..bdbd7caf7 --- /dev/null +++ b/lib/ldpc/jtmode_codes/ldpc-search @@ -0,0 +1,22 @@ +#!/bin/sh +# search for a good code +n=160 +k=72 +m=$((n-k)) + +set -e # Stop if an error occurs + +rand-src ldpc.src 2 "$k"x1000000 + +for i in `seq 1 1000` +do + seed=$i + echo seed $seed + make-ldpc ldpc.pchk $m $n $seed evenboth 2x3/8x4 no4cycle + make-gen ldpc.pchk ldpc.gen dense + encode ldpc.pchk ldpc.gen ldpc.src ldpc.enc + transmit ldpc.enc ldpc.rec 1 awgn 0.8 + decode ldpc.pchk ldpc.rec ldpc.dec awgn 0.80 prprp 250 + verify ldpc.pchk ldpc.dec ldpc.gen ldpc.src +done + diff --git a/lib/ldpc/jtmode_codes/ldpc-waterfall b/lib/ldpc/jtmode_codes/ldpc-waterfall new file mode 100755 index 000000000..75388d8be --- /dev/null +++ b/lib/ldpc/jtmode_codes/ldpc-waterfall @@ -0,0 +1,38 @@ +#!/bin/sh +# this script characterizes a single code over a range of Eb/N0 +# note relationship between noise standard deviation, sigma, and Eb/No: +# Eb/No = 1/(2*R*sigma^2) +# If R=1/2, then Eb/No = 1/sigma^2 + +set -e # Stop if an error occurs +#set -v # Echo commands as they are read + +n=174 +k=87 +m=$((n-k)) +seed=4 +ntrials=1000000 + +rate=$(echo "scale=5; $k/$n" | bc) +echo n=$n k=$k rate=$rate m=$m + +make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 2x3/8x4 no4cycle + +make-gen ldpc.pchk ldpc.gen dense +rand-src ldpc.src 1 "$k"x"$ntrials" +encode ldpc.pchk ldpc.gen ldpc.src ldpc.enc + +for i in `seq -1 10`; +do + db=$(echo "scale=5; $i/2.0" | bc) + ebno=$(echo "scale=5; e(0.1*$db*l(10.0))" | bc -l) + sigma=$(echo "scale=5; 1/sqrt(2*$rate*$ebno)" | bc) + echo db $db ebno $ebno sigma $sigma + + transmit ldpc.enc ldpc.rec 1 awgn $sigma + decode ldpc.pchk ldpc.rec ldpc.dec awgn $sigma\ + prprp 250 + verify ldpc.pchk ldpc.dec ldpc.gen \ + ldpc.src + +done