WSJT-X/lib/sync9.f90

53 lines
1.1 KiB
Fortran
Raw Normal View History

subroutine sync9(ss,tstep,df3,ntol,nfqso,ccfred,ia,ib,ipkbest)
parameter (NSMAX=22000) !Max length of saved spectra
real ss(184,NSMAX)
real ccfred(NSMAX)
include 'jt9sync.f90'
ipk=0
ipkbest=0
ia=1
ib=min(1000,nint(1000.0/df3))
if(ntol.lt.1000) then
ia=nint((nfqso-1000-ntol)/df3)
ib=nint((nfqso-1000+ntol)/df3)
if(ia.lt.1) ia=1
if(ib.gt.NSMAX) ib=NSMAX
endif
sbest=0.
lagmax=2.5/tstep + 0.9999
ccfred=0.
do i=ia,ib
smax=0.
do lag=-lagmax,lagmax
sum=0.
do j=1,16
k=ii2(j) + lag
! if(k.ge.1) sum=sum + ss(k,i)
if(k.ge.1) sum=sum + ss(k,i) - 0.5*(ss(k+2,i)+ss(k+4,i))
enddo
if(sum.gt.smax) then
smax=sum
ipk=i
lagpk=lag
endif
enddo
ccfred(i)=smax !Best at this freq, over all lags
if(smax.gt.sbest) then
sbest=smax
ipkbest=ipk
lagpkbest=lagpk
endif
enddo
call pctile(ccfred(ia),ib-ia+1,50,xmed)
if(xmed.le.0.0) xmed=1.0
ccfred=ccfred/xmed
return
end subroutine sync9