From 476c0683a89d267d6febdbe9c04dbfa831228b92 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 27 Feb 2015 15:38:24 +0000 Subject: [PATCH] Further improvements to JT9 decoder. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4993 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/afc9.f90 | 16 ++++++++-------- lib/chkss2.f90 | 12 ++++-------- lib/decjt9.f90 | 7 ++++--- lib/fchisq.f90 | 2 +- lib/jt9fano.f90 | 2 +- lib/symspec2.f90 | 6 +----- 6 files changed, 19 insertions(+), 26 deletions(-) diff --git a/lib/afc9.f90 b/lib/afc9.f90 index 5b4546cf0..a1755fd85 100644 --- a/lib/afc9.f90 +++ b/lib/afc9.f90 @@ -6,9 +6,9 @@ subroutine afc9(c3,npts,fsample,a,syncpk) a(1)=0. !f0 a(2)=0. !f1 a(3)=0. !f2 - deltaa(1)=0.2 - deltaa(2)=0.01 - deltaa(3)=0.01 + deltaa(1)=0.4 + deltaa(2)=0.1 + deltaa(3)=0.1 nterms=3 ! Start the iteration @@ -42,17 +42,17 @@ subroutine afc9(c3,npts,fsample,a,syncpk) delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5) a(j)=a(j)-delta deltaa(j)=deltaa(j)*fn/3. -! write(*,4000) iter,j,a,deltaa,-chisq2 -!4000 format(i1,i2,6f10.4,f9.3) +! write(*,4000) iter,j,a,-chisq2 +!4000 format(i1,i2,3f10.4,f11.3) enddo chisqr=fchisq(c3,npts,fsample,a) - if(chisqr/chisqr0.gt.0.9999) exit + if(chisqr/chisqr0.gt.0.99) exit chisqr0=chisqr enddo syncpk=-chisqr -! write(*,4001) a,deltaa,-chisq2 -!4001 format(3x,6f10.4,f9.3) +! write(*,4001) a,-chisq2 +!4001 format(3x,3f10.4,f11.3) return end subroutine afc9 diff --git a/lib/chkss2.f90 b/lib/chkss2.f90 index 12b2a2e21..ad52c66ca 100644 --- a/lib/chkss2.f90 +++ b/lib/chkss2.f90 @@ -2,22 +2,18 @@ subroutine chkss2(ss2,freq,drift,schk) real ss2(0:8,85) real s(0:8,85) - real s1(0:5) include 'jt9sync.f90' ave=sum(ss2)/(9*85) if(freq+drift.eq.-999999.0) ave=0. !To silence compiler warning s=ss2/ave-1.0 -! call zplot9(s,freq,drift) s1=0. - do lag=0,5 - do i=1,16 - j=ii(i)+lag - if(j.le.85) s1(lag)=s1(lag) + s(0,j) - enddo + do i=1,16 + j=ii(i) + if(j.le.85) s1=s1 + s(0,j) enddo - schk=s1(0)/16.0 + schk=s1/16.0 return end subroutine chkss2 diff --git a/lib/decjt9.f90 b/lib/decjt9.f90 index 397da000c..80f32cca3 100644 --- a/lib/decjt9.f90 +++ b/lib/decjt9.f90 @@ -94,9 +94,10 @@ subroutine decjt9(ss,id2,nutc,nfqso,newdat,npts8,nfa,nfsplit,nfb,ntol, & call timer('softsym ',1) sync=(syncpk+1)/4.0 - if(maxval(i1SoftSymbols).eq.0) cycle - if(nqd.eq.1 .and. ((sync.lt.0.5) .or. (schk.lt.2.0))) cycle - if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.schklim))) cycle +! if(maxval(i1SoftSymbols).eq.0) cycle +! if(nqd.eq.1 .and. ((sync.lt.0.5) .or. (schk.lt.1.0))) cycle +! if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.1.5))) cycle + if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.1.8))) cycle call timer('jt9fano ',0) call jt9fano(i1SoftSymbols,limit,nlim,msg) diff --git a/lib/fchisq.f90 b/lib/fchisq.f90 index 1dece102a..6eb8b6b68 100644 --- a/lib/fchisq.f90 +++ b/lib/fchisq.f90 @@ -34,7 +34,7 @@ real function fchisq(c3,npts,fsample,a) sum0=sum0+pp endif enddo - sync=(sum1/16.0)/(sum0/69.0) - 1.0 + sync=sum1/10000.0 fchisq=-sync return diff --git a/lib/jt9fano.f90 b/lib/jt9fano.f90 index 0c1ca042d..95d27311d 100644 --- a/lib/jt9fano.f90 +++ b/lib/jt9fano.f90 @@ -69,7 +69,7 @@ subroutine jt9fano(i1SoftSymbols,limit,nlim,msg) ncycles,metric,ierr) nlim=ncycles/(nbits+31) - if(ncycles.lt.(nbits*limit)) then + if(ncycles.lt.((nbits+31)*limit)) then nbytes=(nbits+7)/8 do i=1,nbytes n=i1DecodedBytes(i) diff --git a/lib/symspec2.f90 b/lib/symspec2.f90 index f4bad2627..594df03e2 100644 --- a/lib/symspec2.f90 +++ b/lib/symspec2.f90 @@ -34,10 +34,6 @@ subroutine symspec2(c5,nz3,nsps8,nspsd,fsample,freq,drift,snrdb,schk, & enddo call chkss2(ss2,freq,drift,schk) - if(schk.lt.1.8) then - i1SoftSymbolsScrambled=0 - go to 900 - endif ss=0. sig=0. @@ -87,5 +83,5 @@ subroutine symspec2(c5,nz3,nsps8,nspsd,fsample,freq,drift,snrdb,schk, & enddo enddo -900 return + return end subroutine symspec2