From c54831df14c8dd735561679f61a412dae5f31491 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Tue, 22 Mar 2016 16:42:59 +0000 Subject: [PATCH] 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 --- lib/fer65.f90 | 22 +++++++++++++--------- lib/jt65.f90 | 10 ++++++---- lib/jt65_decode.f90 | 17 ++++++++++------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/fer65.f90 b/lib/fer65.f90 index 755976591..3817114db 100644 --- a/lib/fer65.f90 +++ b/lib/fer65.f90 @@ -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 diff --git a/lib/jt65.f90 b/lib/jt65.f90 index be540043c..9b99730f1 100644 --- a/lib/jt65.f90 +++ b/lib/jt65.f90 @@ -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 diff --git a/lib/jt65_decode.f90 b/lib/jt65_decode.f90 index b48a0977c..7d1707798 100644 --- a/lib/jt65_decode.f90 +++ b/lib/jt65_decode.f90 @@ -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