WSJT-X/lib/ldpc/jtmode_codes/ldpc-waterfall
Steven Franke e867373f18 Add (128,82) ldpc code.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6494 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-02-25 14:42:10 +00:00

39 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# this script characterizes a single code over a range of Eb/N0
# a baseband signal with mean power = 1
# 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
# make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 2x3/8x4 no4cycle
set -e # Stop if an error occurs
#set -v # Echo commands as they are read
n=128
k=80
m=$((n-k))
seed=873
ntrials=1000000
niterations=10
rate=$(echo "scale=5; $k/$n" | bc)
echo n=$n k=$k rate=$rate m=$m
make-ldpc ldpc.pchk "$m" "$n" $seed evenboth 120x3/8x4 no4cycle
make-gen ldpc.pchk ldpc.gen sparse
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 $niterations
verify ldpc.pchk ldpc.dec ldpc.gen ldpc.src
done