Merge branch 'release-2.1.0' of bitbucket.org:k1jt/wsjtx into release-2.1.0

This commit is contained in:
Bill Somerville 2019-05-03 23:34:39 +01:00
commit 2e5152ad08
3 changed files with 26 additions and 14 deletions

View File

@ -30,8 +30,7 @@ contains
include 'ft4/ft4_params.f90' include 'ft4/ft4_params.f90'
class(ft4_decoder), intent(inout) :: this class(ft4_decoder), intent(inout) :: this
procedure(ft4_decode_callback) :: callback procedure(ft4_decode_callback) :: callback
parameter (NSS=NSPS/NDOWN) parameter (NSS=NSPS/NDOWN,NDMAX=NMAX/NDOWN)
parameter (NZZ=18*3456)
character message*37,msgsent*37 character message*37,msgsent*37
character c77*77 character c77*77
character*37 decodes(100) character*37 decodes(100)
@ -42,8 +41,8 @@ contains
character*6 hhmmss character*6 hhmmss
character*4 cqstr,cqstr0 character*4 cqstr,cqstr0
complex cd2(0:NZZ/NDOWN-1) !Complex waveform complex cd2(0:NDMAX-1) !Complex waveform
complex cb(0:NZZ/NDOWN-1+NN*NSS) complex cb(0:NDMAX-1)
complex cd(0:NN*NSS-1) !Complex waveform complex cd(0:NN*NSS-1) !Complex waveform
complex ctwk(2*NSS),ctwk2(2*NSS,-16:16) complex ctwk(2*NSS),ctwk2(2*NSS,-16:16)
complex csymb(NSS) complex csymb(NSS)
@ -52,7 +51,7 @@ contains
real bmeta(2*NN),bmetb(2*NN),bmetc(2*NN) real bmeta(2*NN),bmetb(2*NN),bmetc(2*NN)
real a(5) real a(5)
real dd(NZZ) real dd(NMAX)
real llr(2*ND),llra(2*ND),llrb(2*ND),llrc(2*ND),llrd(2*ND) real llr(2*ND),llra(2*ND),llrb(2*ND),llrc(2*ND),llrd(2*ND)
real s2(0:255) real s2(0:255)
real candidate(3,100) real candidate(3,100)
@ -61,7 +60,7 @@ contains
integer apbits(2*ND) integer apbits(2*ND)
integer apmy_ru(28),aphis_fd(28) integer apmy_ru(28),aphis_fd(28)
integer icos4a(0:3),icos4b(0:3),icos4c(0:3),icos4d(0:3) integer icos4a(0:3),icos4b(0:3),icos4c(0:3),icos4d(0:3)
integer*2 iwave(NZZ) !Raw received data integer*2 iwave(NMAX) !Raw received data
integer*1 message77(77),rvec(77),apmask(2*ND),cw(2*ND) integer*1 message77(77),rvec(77),apmask(2*ND),cw(2*ND)
integer*1 hbits(2*NN) integer*1 hbits(2*NN)
integer graymap(0:3) integer graymap(0:3)
@ -245,7 +244,7 @@ contains
call ft4_downsample(dd,dobigfft,f0,cd2) !Downsample to 32 Sam/Sym call ft4_downsample(dd,dobigfft,f0,cd2) !Downsample to 32 Sam/Sym
call timer('ft4_down',1) call timer('ft4_down',1)
if(dobigfft) dobigfft=.false. if(dobigfft) dobigfft=.false.
sum2=sum(cd2*conjg(cd2))/(real(NZZ)/real(NDOWN)) sum2=sum(cd2*conjg(cd2))/(real(NMAX)/real(NDOWN))
if(sum2.gt.0.0) cd2=cd2/sqrt(sum2) if(sum2.gt.0.0) cd2=cd2/sqrt(sum2)
! Sample rate is now 12000/16 = 750 samples/second ! Sample rate is now 12000/16 = 750 samples/second
do isync=1,2 do isync=1,2
@ -253,15 +252,15 @@ contains
idfmin=-12 idfmin=-12
idfmax=12 idfmax=12
idfstp=3 idfstp=3
ibmin=0 ibmin=-200
ibmax=800 ibmax=950
ibstp=4 ibstp=4
else else
idfmin=idfbest-4 idfmin=idfbest-4
idfmax=idfbest+4 idfmax=idfbest+4
idfstp=1 idfstp=1
ibmin=max(0,ibest-5) ibmin=max(0,ibest-5)
ibmax=min(ibest+5,NZZ/NDOWN-1) ibmax=min(ibest+5,NDMAX-1)
ibstp=1 ibstp=1
endif endif
ibest=-1 ibest=-1
@ -287,7 +286,14 @@ contains
call timer('ft4down ',1) call timer('ft4down ',1)
sum2=sum(abs(cb)**2)/(real(NSS)*NN) sum2=sum(abs(cb)**2)/(real(NSS)*NN)
if(sum2.gt.0.0) cb=cb/sqrt(sum2) if(sum2.gt.0.0) cb=cb/sqrt(sum2)
cd=cb(ibest:ibest+NN*NSS-1) cd=0.
if(ibest.ge.0) then
it=min(NDMAX-1,ibest+NN*NSS-1)
np=it-ibest+1
cd(0:np-1)=cb(ibest:it)
else
cd(-ibest:ibest+NN*NSS-1)=cb(0:NN*NSS+2*ibest-1)
endif
call timer('four2a ',0) call timer('four2a ',0)
do k=1,NN do k=1,NN
i1=(k-1)*NSS i1=(k-1)*NSS

View File

@ -89,7 +89,12 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate, &
enddo enddo
iz=ib-ia+1 iz=ib-ia+1
call indexx(red(ia:ib),iz,indx) call indexx(red(ia:ib),iz,indx)
ibase=indx(nint(0.40*iz)) - 1 + ia npctile=nint(0.40*iz)
if(npctile.lt.1) then ! something is wrong; bail out
ncand=0
return;
endif
ibase=indx(npctile) - 1 + ia
if(ibase.lt.1) ibase=1 if(ibase.lt.1) ibase=1
if(ibase.gt.nh1) ibase=nh1 if(ibase.gt.nh1) ibase=nh1
base=red(ibase) base=red(ibase)

View File

@ -22,7 +22,8 @@ program jt9
!### ndepth was defined as 60001. Why??? !### ndepth was defined as 60001. Why???
integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700, & integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700, &
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=1,nexp_decode=0 fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=1,nexp_decode=0
logical :: read_files = .true., tx9 = .false., display_help = .false. logical :: read_files = .true., tx9 = .false., display_help = .false., &
bLowSidelobes = .false.
type (option) :: long_options(26) = [ & type (option) :: long_options(26) = [ &
option ('help', .false., 'h', 'Display this help message', ''), & option ('help', .false., 'h', 'Display this help message', ''), &
option ('shmem',.true.,'s','Use shared memory for sample data','KEY'), & option ('shmem',.true.,'s','Use shared memory for sample data','KEY'), &
@ -242,7 +243,7 @@ program jt9
ingain=0 ingain=0
call timer('symspec ',0) call timer('symspec ',0)
nminw=1 nminw=1
call symspec(shared_data,k,ntrperiod,nsps,ingain,nminw,pxdb, & call symspec(shared_data,k,ntrperiod,nsps,ingain,bLowSidelobes,nminw,pxdb, &
s,df3,ihsym,npts8,pxdbmax) s,df3,ihsym,npts8,pxdbmax)
call timer('symspec ',1) call timer('symspec ',1)
endif endif