mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-09-28 08:06:35 -04:00
Cleanup of code for hinted JT65 decoding.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6558 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
bcdd28a038
commit
831feb7a5d
@ -42,8 +42,8 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
|||||||
dtbest=dt
|
dtbest=dt
|
||||||
call afc65b(c5x,n6,fsample,nflip,a,ccfbest,dtbest)
|
call afc65b(c5x,n6,fsample,nflip,a,ccfbest,dtbest)
|
||||||
call timer('afc65b ',1)
|
call timer('afc65b ',1)
|
||||||
dtbest=dtbest+0.003628 ! remove decimation filter and coh. integrator delay
|
dtbest=dtbest+0.003628 !Remove decimation filter and coh. integrator delay
|
||||||
dt=dtbest !return new, improved estimate of dt
|
dt=dtbest !Return new, improved estimate of dt
|
||||||
sync2=3.7e-4*ccfbest/sq0 !Constant is empirical
|
sync2=3.7e-4*ccfbest/sq0 !Constant is empirical
|
||||||
if(mode65.eq.4) cx=cx1
|
if(mode65.eq.4) cx=cx1
|
||||||
|
|
||||||
@ -83,6 +83,7 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
|||||||
|
|
||||||
call timer('dec65b ',0)
|
call timer('dec65b ',0)
|
||||||
qualbest=0.
|
qualbest=0.
|
||||||
|
qual0=-1.e30
|
||||||
minsmo=0
|
minsmo=0
|
||||||
maxsmo=0
|
maxsmo=0
|
||||||
if(mode65.ge.2) then
|
if(mode65.ge.2) then
|
||||||
@ -112,7 +113,8 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
|||||||
s2(i,1:126)=s1(jj,1:126)
|
s2(i,1:126)=s1(jj,1:126)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
call decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
|
nadd=ismo !### ??? ###
|
||||||
|
call decode65b(s2,nflip,nadd,mode65,ntrials,naggressive,ndepth, &
|
||||||
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
||||||
|
|
||||||
if(nft.eq.1) then
|
if(nft.eq.1) then
|
||||||
@ -128,15 +130,16 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
|
|||||||
nsmobest=ismo
|
nsmobest=ismo
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
if(qual.lt.qual0) exit
|
||||||
|
qual0=qual
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! print*,width,minsmo,maxsmo,nsmo,nn
|
|
||||||
|
|
||||||
if(nft.eq.2) then
|
if(nft.eq.2) then
|
||||||
decoded=decoded_best
|
decoded=decoded_best
|
||||||
qual=qualbest
|
qual=qualbest
|
||||||
nsmo=nsmobest
|
nsmo=nsmobest
|
||||||
param(9)=nsmo
|
param(9)=nsmo
|
||||||
|
nn=nnbest
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call timer('dec65b ',1)
|
call timer('dec65b ',1)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
|
subroutine decode65b(s2,nflip,nadd,mode65,ntrials,naggressive,ndepth, &
|
||||||
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
|
||||||
|
|
||||||
use jt65_mod
|
use jt65_mod
|
||||||
@ -17,7 +17,6 @@ subroutine decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
nadd=mode65
|
|
||||||
call extract(s3,nadd,mode65,ntrials,naggressive,ndepth,mycall,hiscall, &
|
call extract(s3,nadd,mode65,ntrials,naggressive,ndepth,mycall,hiscall, &
|
||||||
hisgrid,nexp_decode,ncount,nhist,decoded,ltext,nft,qual)
|
hisgrid,nexp_decode,ncount,nhist,decoded,ltext,nft,qual)
|
||||||
|
|
||||||
|
@ -11,12 +11,12 @@ subroutine hint65(s3,mrs,mrs2,mrsym,mr2sym,mrprob,nadd,flip, &
|
|||||||
integer mrs(63),mrs2(63)
|
integer mrs(63),mrs2(63)
|
||||||
integer mrsym(0:62),mr2sym(0:62),mrprob(0:62)
|
integer mrsym(0:62),mr2sym(0:62),mrprob(0:62)
|
||||||
integer dgen(12),sym(0:62),sym_rev(0:62)
|
integer dgen(12),sym(0:62),sym_rev(0:62)
|
||||||
! integer test(0:62)
|
|
||||||
character*6 mycall,hiscall,hisgrid,call2(MAXCALLS)
|
character*6 mycall,hiscall,hisgrid,call2(MAXCALLS)
|
||||||
character*4 grid2(MAXCALLS),rpt(MAXRPT)
|
character*4 grid2(MAXCALLS),rpt(MAXRPT)
|
||||||
character callsign*12,grid*4
|
character callsign*12,grid*4
|
||||||
character*180 line
|
character*180 line
|
||||||
character ceme*3,msg*22
|
character ceme*3,msg*22
|
||||||
|
character cgood*1
|
||||||
character*22 msg0(MAXMSG),decoded
|
character*22 msg0(MAXMSG),decoded
|
||||||
logical*1 eme(MAXCALLS)
|
logical*1 eme(MAXCALLS)
|
||||||
logical first
|
logical first
|
||||||
@ -67,10 +67,9 @@ subroutine hint65(s3,mrs,mrs2,mrsym,mr2sym,mrprob,nadd,flip, &
|
|||||||
if(ncalls.lt.10) stop 'CALL3.TXT very short or missing?'
|
if(ncalls.lt.10) stop 'CALL3.TXT very short or missing?'
|
||||||
close(23)
|
close(23)
|
||||||
|
|
||||||
|
|
||||||
! NB: generation of test messages is not yet complete!
|
! NB: generation of test messages is not yet complete!
|
||||||
j=0
|
j=0
|
||||||
do i=-1,ncalls !### if ncalls is too small, generate random msgs ???
|
do i=-1,ncalls !### if ncalls is too small, generate random msgs ???
|
||||||
mz=2
|
mz=2
|
||||||
if(i.eq.-1) mz=1
|
if(i.eq.-1) mz=1
|
||||||
if(i.eq.0) mz=65
|
if(i.eq.0) mz=65
|
||||||
@ -130,34 +129,20 @@ subroutine hint65(s3,mrs,mrs2,mrsym,mr2sym,mrprob,nadd,flip, &
|
|||||||
enddo
|
enddo
|
||||||
p=psum/ref
|
p=psum/ref
|
||||||
|
|
||||||
! Find the FT-defined soft distance
|
|
||||||
! test=sym1(0:62,k)
|
|
||||||
! nh=0
|
|
||||||
! ns=0
|
|
||||||
! do i=0,62
|
|
||||||
! j=62-i
|
|
||||||
! if(mrsym(j).ne.test(i)) then
|
|
||||||
! nh=nh+1
|
|
||||||
! if(mr2sym(j).ne.test(i)) ns=ns+mrprob(j)
|
|
||||||
! endif
|
|
||||||
! enddo
|
|
||||||
! ds=ns*63.0/sum(mrprob)
|
|
||||||
|
|
||||||
if(p.gt.u1) then
|
if(p.gt.u1) then
|
||||||
u2=u1
|
u2=u1
|
||||||
u1=p
|
u1=p
|
||||||
ipk=k
|
ipk=k
|
||||||
! nhard=nh
|
|
||||||
! dsoft=ds
|
|
||||||
! dtotal=nh+ds
|
|
||||||
! ncandidates=0
|
|
||||||
! ntry=0
|
|
||||||
endif
|
endif
|
||||||
|
if(p.ne.u1 .and. p.gt.u2) u2=p
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
decoded=' '
|
decoded=' '
|
||||||
qual=100.0*(u1-1.12*u2)
|
bias=max(1.12*u2,0.35)
|
||||||
|
if(nadd.ge.4) bias=max(1.08*u2,0.45)
|
||||||
|
if(nadd.ge.8) bias=max(1.04*u2,0.60)
|
||||||
|
qual=100.0*(u1-bias)
|
||||||
qmin=1.0
|
qmin=1.0
|
||||||
if(qual.ge.qmin) decoded=msg0(ipk)
|
if(qual.ge.qmin) decoded=msg0(ipk)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user