WSJT-X/lib/sync9f.f90

56 lines
1.0 KiB
Fortran

subroutine sync9f(s2,nq,nfa,nfb,ss2,ss3,lagpk,ipk,ccfbest)
! Look for JT9 sync pattern in the folded symbol spectra, s2.
! Frequency search extends from nfa to nfb. Synchronized symbol
! spectra are put into ss2() and ss3().
integer ii4(16)
real s2(240,340)
real ss2(0:8,85)
real ss3(0:7,69)
include 'jt9sync.f90'
ii4=4*ii-3
ccf=0.
ccfbest=0.
nfft=4*nq
df=12000.0/nfft
ia=nfa/df
ib=nfb/df + 0.9999
do i=ia,ib
do lag=0,339
t=0.
do n=1,16
j=ii4(n)+lag
if(j.gt.340) j=j-340
t=t + s2(i,j)
enddo
if(t.gt.ccfbest) then
lagpk=lag
ipk=i
ccfbest=t
endif
enddo
enddo
do i=0,8
j4=lagpk-4
i2=2*i + ipk
if(i2.lt.1) i2=1
m=0
do j=1,85
j4=j4+4
if(j4.gt.340) j4=j4-340
if(j4.lt.1) j4=j4+340
ss2(i,j)=s2(i2,j4)
if(i.ge.1 .and. isync(j).eq.0) then
m=m+1
ss3(i-1,m)=ss2(i,j)
endif
enddo
enddo
return
end subroutine sync9f