1. Clean up the behavior of Avg and DS decoding.

2. Specify Navg (max # of transmissions to average) for fer65.
3. Specify DS (0 = no deep search, 1 = deep search) for fer65.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6549 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-03-22 16:42:59 +00:00
parent 7f23f5f12e
commit 23ef7478df
3 changed files with 29 additions and 20 deletions

View File

@ -24,8 +24,8 @@ program fer65
nargs=iargc()
if(nargs.ne.7) then
print*,'Usage: fer65 submode fspread snr1 snr2 depth Navg iters'
print*,'Example: fer65 C 3.0 -28 -12 19 1 1000'
print*,'Usage: fer65 submode fspread snr1 snr2 Navg DS iters'
print*,'Example: fer65 C 3.0 -28 -12 8 1 1000'
go to 999
endif
@ -37,12 +37,16 @@ program fer65
call getarg(4,arg)
read(arg,*) snr2
call getarg(5,arg)
read(arg,*) ndepth
call getarg(6,arg)
read(arg,*) navg
call getarg(6,arg)
read(arg,*) nds
call getarg(7,arg)
read(arg,*) iters
ndepth=3
if(navg.gt.1) ndepth=ndepth+16
if(nds.ne.0) ndepth=ndepth+32
dfmax=min(d,0.5*2.69)
if(submode.eq.'b' .or. submode.eq.'B') dfmax=min(d,2.69)
if(submode.eq.'c' .or. submode.eq.'C') dfmax=min(d,2.0*2.69)
@ -54,9 +58,9 @@ program fer65
open(20,file='fer65.20',status='unknown')
open(21,file='fer65.21',status='unknown')
write(20,1000) submode,iters,ntrials,naggressive,d,ndepth,navg
1000 format(/'JT65',a1,' Iters:',i5,' T:',i6,' Aggressive:',i3, &
' Doppler:',f5.1,' Depth:',i2,' Navg:',i3)
write(20,1000) submode,iters,ntrials,naggressive,d,iand(ndepth,3),navg,nds
1000 format(/'JT65',a1,' Iters:',i5,' T:',i6,' Aggr:',i3, &
' Dop:',f5.1,' Depth:',i2,' Navg:',i3,' DS:',i2)
write(20,1002)
1002 format(/' dB nsync ngood nbad sync dsnr ', &
'DT Freq Nsum Width'/85('-'))
@ -92,7 +96,7 @@ program fer65
nfreq=0
ndrift=0
nwidth=0
cmnd='./jt65 -m A -a 10 -c K1ABC -f 1500 -n 1000 -d 5 -s -X 32 000000_????.wav > decoded.txt'
cmnd='./jt65 -m A -a 10 -c K1ABC -f 1500 -n 1000 -d 5 -s 000000_????.wav > decoded.txt'
cmnd(11:11)=submode
write(cmnd(47:48),'(i2)') ndepth
call system(cmnd)
@ -132,7 +136,7 @@ program fer65
sq(7)=sq(7) + nsum*nsum
else if(decoded.ne.' ') then
nbad=nbad+1
print*,nbad,decoded
print*,'Nbad:',nbad,decoded
endif
endif
20 continue

View File

@ -9,7 +9,7 @@ program jt65
use readwav
character c,mode
logical :: display_help=.false.,nrobust=.false.
logical :: display_help=.false.,nrobust=.false.,single_decode=.false.
type(wav_header) :: wav
integer*2 id2(NZMAX)
real*4 dd(NZMAX)
@ -36,7 +36,7 @@ program jt65
naggressive=0
nfqso=1500
ntrials=10000
nexp_decoded=0
nexp_decode=0
ntol=1000
nsubmode=0
nlow=200
@ -77,8 +77,9 @@ program jt65
case ('g')
read (optarg(:narglen), *) hisgrid
case ('X')
read (optarg(:narglen), *) nexp_decoded
read (optarg(:narglen), *) nexp_decode
case ('s')
single_decode=.true.
ntol=100
nlow=nfqso-ntol
nhigh=nfqso+ntol
@ -86,6 +87,7 @@ program jt65
end select
end do
if(single_decode) nexp_decode=ior(nexp_decode,32)
if(display_help .or. nstat.lt.0 .or. nremain.lt.1) then
print *, ''
print *, 'Usage: jt65 [OPTIONS] file1 [file2 ...]'
@ -123,7 +125,7 @@ program jt65
dd(npts+1:)=0.
call test(dd,nutc,nfa,nfb,nfqso,ntol,nsubmode, &
n2pass,nrobust,ntrials,naggressive,ndepth, &
mycall,hiscall,hisgrid,nexp_decoded)
mycall,hiscall,hisgrid,nexp_decode)
if(nft.gt.0) exit
enddo

View File

@ -225,10 +225,11 @@ contains
ndepth,ntrials,naggressive,nclearave,neme,mycall, &
hiscall,hisgrid,nftt,avemsg,qave,deepave,nsum,ndeepave)
nsmo=param(9)
nqave=qave
if (associated(this%callback) .and. nsum.ge.2) then
call this%callback(nutc,sync1,nsnr,dtx-1.0,nfreq,ndrift, &
width,avemsg,nftt,nqual,nsmo,nsum,minsync,nsubmode, &
width,avemsg,nftt,nqave,nsmo,nsum,minsync,nsubmode, &
naggressive)
prtavg=.true.
cycle
@ -461,26 +462,28 @@ contains
call extract(s3c,nadd,mode65,ntrials,naggressive,ndepth,mycall, &
hiscall,hisgrid,nexp_decode,ncount,nhist,avemsg,ltext,nftt,qual)
if(nftt.eq.1) then
nsmo=ismo
param(9)=nsmo
exit
go to 900
else if(nftt.eq.2) then
if(qual.gt.qualbest) then
decoded_best=decoded
deepbest=avemsg
qualbest=qual
nnbest=nn
nsmobest=ismo
nfttbest=nftt
endif
endif
enddo
if(nftt.eq.2) then
decoded=decoded_best
qual=qualbest
if(nfttbest.eq.2) then
avemsg=deepbest !### ???
deepave=deepbest
qave=qualbest
nsmo=nsmobest
param(9)=nsmo
nftt=nfttbest
endif
900 continue