#!/bin/bash # jt65 end-to-end simulator. Run enough cases to get a given # number of successful decodes or a given number of errors # For better performance, copy this script and jt65, jt65sim # executables to a ramdisk and run from there. mode=C spread=4.0 for i in `seq 0 21`; do nruns=0 ndecodes=0 ngood=0 nbad=0 snr=$((-25+$i)) #while [ $[ $nruns - $ngood ] -lt 200 ] #while [ $ngood -lt 200 ] while [ $nruns -lt 1000 ] do rm 000000_0001.wav ./jt65sim -m $mode -n 1 -d $spread -s \\$snr > /dev/null rm decoded.txt ./jt65 -m $mode -a 10 -f 1500 -n 1000 -s 000000_0001.wav > decoded.txt if [ -e decoded.txt ]; then nd=$( wc -l < decoded.txt ) ng=$( grep "K1ABC" decoded.txt | wc -l ) nb=$[$nd-$ng] ndecodes=$[$ndecodes + $nd] ngood=$[$ngood + $ng] nbad=$[$nbad + $nb] fi nruns=$[$nruns + 1] nmissed=$[$nruns-$ngood] pe=$( echo "scale=5; $nmissed/$nruns" | bc -l ) ps=$( echo "scale=5; $ngood/$nruns" | bc -l ) echo -en snr: $snr nruns: $nruns ndecodes: $ndecodes ngood: $ngood nbad: $nbad nmissed: $nmissed wer: $pe success: $ps"\r" done echo snr: $snr nruns: $nruns ndecodes: $ndecodes ngood: $ngood nbad: $nbad nmissed: $nmissed wer: $pe success: $ps done