mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 22:28:41 -05:00
85 lines
2.0 KiB
Fortran
85 lines
2.0 KiB
Fortran
|
program synctst
|
||
|
|
||
|
! Tests JT65B2 sync patterns
|
||
|
|
||
|
parameter (LAGMAX=20)
|
||
|
real ccf0(0:LAGMAX),ccf2(0:LAGMAX),ccf3(0:LAGMAX)
|
||
|
character*12 arg
|
||
|
integer npr(126),np0(126),np1(126),npr2(126)
|
||
|
data npr/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, &
|
||
|
0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, &
|
||
|
0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, &
|
||
|
0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, &
|
||
|
1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, &
|
||
|
0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, &
|
||
|
1,1,1,1,1,1/
|
||
|
|
||
|
nargs=iargc()
|
||
|
if(nargs.ne.1) then
|
||
|
print*,'Usage: synctst iters'
|
||
|
go to 999
|
||
|
endif
|
||
|
call getarg(1,arg)
|
||
|
read(arg,*) iters
|
||
|
|
||
|
worst=0.
|
||
|
do lag=0,LAGMAX
|
||
|
nsum=0
|
||
|
do i=1,126-lag
|
||
|
nsum=nsum + npr(i)*npr(lag+i)
|
||
|
enddo
|
||
|
ccf0(lag)=2.0*nsum/(126.0-lag)
|
||
|
if(lag.ge.1 .and. ccf0(lag).gt.worst) worst=ccf0(lag)
|
||
|
enddo
|
||
|
|
||
|
best2=1.0
|
||
|
do iter=1,iters
|
||
|
|
||
|
10 np0=0
|
||
|
np1=0
|
||
|
n0=0
|
||
|
do i=1,126
|
||
|
if(npr(i).eq.1) then
|
||
|
call random_number(r)
|
||
|
if(r.lt.0.5) then
|
||
|
np0(i)=1
|
||
|
n0=n0+1
|
||
|
else
|
||
|
np1(i)=1
|
||
|
endif
|
||
|
endif
|
||
|
enddo
|
||
|
if(n0.ne.31 .and. n0.ne.32) go to 10
|
||
|
|
||
|
worst2=0.
|
||
|
do lag=0,LAGMAX
|
||
|
nsum=0
|
||
|
do i=1,126-lag
|
||
|
nsum=nsum + np0(i)*np0(lag+i) + np1(i)*np1(lag+i)
|
||
|
enddo
|
||
|
ccf2(lag)=2.0*nsum/(126.0-lag)
|
||
|
if(lag.ge.1 .and. ccf2(lag).gt.worst2) then
|
||
|
worst2=ccf2(lag)
|
||
|
lagbad=lag
|
||
|
endif
|
||
|
enddo
|
||
|
if(worst2.lt.best2) then
|
||
|
best2=worst2
|
||
|
lagbest=lagbad
|
||
|
n0best=n0
|
||
|
ccf3=ccf2
|
||
|
npr2=np0 + 2*np1
|
||
|
endif
|
||
|
enddo
|
||
|
|
||
|
do lag=0,LAGMAX
|
||
|
write(13,1100) lag,ccf0(lag),ccf3(lag)
|
||
|
1100 format(i3,2f10.3)
|
||
|
enddo
|
||
|
|
||
|
print*,worst,best2,n0best,lagbest
|
||
|
write(*,1110) npr2
|
||
|
1110 format((8x,20(i1,',')))
|
||
|
|
||
|
999 end program synctst
|