Merge in ldpc work.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6468 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Steven Franke 2016-02-05 00:23:34 +00:00
parent 3b206b4fa8
commit 39ae2d156f
8 changed files with 77 additions and 45 deletions

View File

@ -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 columns 2,3 decoder uses variable sigma, columns 4,5 decoder uses fixed sigma=0.9
-0.5 2906 0 10862 5 -0.5 2906 0 10862 5
0.0 18899 1 34663 6 0.0 18899 1 34663 6

View File

@ -1,2 +1,4 @@
5.1 0.005 "(198,72) JTMSK" 3.9 0.15 "(198,72) JTMSK"
3.1 0.0003 "(160,80) LDPC" 2.7 0.003 "(174,87) LDPC"
5.6 0.00003 "(160,80) LDPC"
5.6 0.00008 "(140,80) LDPC"

View File

@ -15,11 +15,13 @@ set logscale y
plot [-1:6] [1e-6:1] \ 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:(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:($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, \ "jtmskcode.results" using 1:(100000-$2)/100000 with linespoints lt 1 lw 2 pt 7, \
"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:($5/1000000) 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 "compare.lab" with labels
exit 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, \

View File

@ -1,5 +1,5 @@
rate 1/2 constraint len 13, bpsk, ngood, nbad 10^5 trials, 10^6 trials 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.00 4403 2 43968 30
0.50 11167 2 111824 33 0.50 11167 2 111824 33
1.00 24082 1 238157 21 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.00 63417 0 634824 14
2.50 81290 1 812206 2 2.50 81290 1 812206 2
3.00 92388 0 924507 2 3.00 92388 0 924507 2
3.50 97560 0 3.50 97560 0 975836 0
4.00 99390 0 4.00 99390 0 993832 0
4.50 99864 0 4.50 99864 0 998695 0
5.00 99977 0 5.00 99977 0 999771 0

View File

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

Binary file not shown.

View File

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

View File

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