diff --git a/CMakeLists.txt b/CMakeLists.txt index b27c3e5..54af49f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -403,8 +403,6 @@ set (wsjt_FSRCS lib/update_hasharray.f90 lib/wav11.f90 lib/wav12.f90 - lib/xcor.f90 - lib/xcor4.f90 lib/wqdecode.f90 lib/wqencode.f90 ) diff --git a/lib/xcor.f90 b/lib/xcor.f90 deleted file mode 100644 index 8393773..0000000 --- a/lib/xcor.f90 +++ /dev/null @@ -1,76 +0,0 @@ -!subroutine xcor(ss,ipk,nsteps,nsym,lag1,lag2,ccf,ccf0,lagpk,flip,fdot,nrobust) -subroutine xcor(ipk,nsteps,nsym,lag1,lag2,ccf,ccf0,lagpk,flip,fdot,nrobust) - -! Computes ccf of a row of ss and the pseudo-random array pr. Returns -! peak of the CCF and the lag at which peak occurs. For JT65, the -! CCF peak may be either positive or negative, with negative implying -! the "OOO" message. - - use jt65_mod - parameter (NHMAX=3413) !Max length of power spectra - parameter (NSMAX=552) !Max number of quarter-symbol steps - real ss(NSMAX,NHMAX) !2d spectrum, stepped by half-symbols - real a(NSMAX) -! real ccf(-44:118) - real ccf(lag1:lag2) - data lagmin/0/ !Silence g77 warning -! save - common/sync/ss - - df=12000.0/8192. -! dtstep=0.5/df - dtstep=0.25/df - fac=dtstep/(60.0*df) - do j=1,nsteps - ii=nint((j-nsteps/2)*fdot*fac)+ipk - if( (ii.ge.1) .and. (ii.le.NHMAX) ) then - a(j)=ss(j,ii) - endif - enddo - - if(nrobust.eq.1) then -! use robust correlation estimator to mitigate AGC attack spikes at beginning -! this reduces the number of spurious candidates overall - call pctile(a,nsteps,50,xmed) - do j=1,nsteps - if( a(j).ge.xmed ) then - a(j)=1 - else - a(j)=-1 - endif - enddo - endif - - ccfmax=0. - ccfmin=0. - do lag=lag1,lag2 - x=0. - do i=1,nsym - j=4*i-3+lag - if(j.ge.1 .and. j.le.nsteps) x=x+a(j)*pr(i) - enddo - ccf(lag)=2*x !The 2 is for plotting scale - if(ccf(lag).gt.ccfmax) then - ccfmax=ccf(lag) - lagpk=lag - endif - - if(ccf(lag).lt.ccfmin) then - ccfmin=ccf(lag) - lagmin=lag - endif - enddo - - ccf0=ccfmax - flip=1.0 - if(-ccfmin.gt.ccfmax) then - do lag=lag1,lag2 - ccf(lag)=-ccf(lag) - enddo - lagpk=lagmin - ccf0=-ccfmin - flip=-1.0 - endif - - return -end subroutine xcor diff --git a/lib/xcor4.f90 b/lib/xcor4.f90 deleted file mode 100644 index 9e1f5a5..0000000 --- a/lib/xcor4.f90 +++ /dev/null @@ -1,95 +0,0 @@ -subroutine xcor4(s2,ipk,nsteps,nsym,lag1,lag2,ich,mode4,ccf,ccf0, & - lagpk,flip) - -! Computes ccf of the 4_FSK spectral array s2 and the pseudo-random -! array pr2. Returns peak of CCF and the lag at which peak occurs. -! The CCF peak may be either positive or negative, with negative -! implying the "OOO" message. - - parameter (NHMAX=1260) !Max length of power spectra - parameter (NSMAX=525) !Max number of half-symbol steps - real s2(NHMAX,NSMAX) !2d spectrum, stepped by half-symbols - real a(NSMAX) - real ccf(-5:540) - integer nch(7) - integer npr2(207) - real pr2(207) - logical first - data lagmin/0/ !Silence compiler warning - data first/.true./ - data npr2/ & - 0,0,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0, & - 0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1,1,0,1,0,0,0, & - 1,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,1,0,0,0,1,1,1,1,0,1,1,0,0,1, & - 0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1,0,1,0,1, & - 0,1,1,1,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1,0,0,0,1,1,1, & - 0,1,1,1,0,1,1,1,0,0,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,1,1,1, & - 1,0,0,1,1,0,0,0,0,1,1,0,0,0,1,0,1,1,0,1,1,1,1,0,1,0,1/ - data nch/1,2,4,9,18,36,72/ - save - - if(first) then - do i=1,207 - pr2(i)=2*npr2(i)-1 - enddo - first=.false. - endif - - ccfmax=0. - ccfmin=0. - nw=nch(ich) - - do j=1,nsteps - n=2*mode4 - if(mode4.eq.1) then - a(j)=max(s2(ipk+n,j),s2(ipk+3*n,j)) - max(s2(ipk ,j),s2(ipk+2*n,j)) - else - kz=max(1,nw/2) - ss0=0. - ss1=0. - ss2=0. - ss3=0. - wsum=0. - do k=-kz+1,kz-1 - w=float(kz-iabs(k))/nw - wsum=wsum+w - ss0=ss0 + w*s2(ipk +k,j) - ss1=ss1 + w*s2(ipk+ n+k,j) - ss2=ss2 + w*s2(ipk+2*n+k,j) - ss3=ss3 + w*s2(ipk+3*n+k,j) - enddo - a(j)=(max(ss1,ss3) - max(ss0,ss2))/sqrt(wsum) - endif - enddo - - do lag=lag1,lag2 - x=0. - do i=1,nsym - j=2*i-1+lag - if(j.ge.1 .and. j.le.nsteps) x=x+a(j)*pr2(i) - enddo - ccf(lag)=2*x !The 2 is for plotting scale - if(ccf(lag).gt.ccfmax) then - ccfmax=ccf(lag) - lagpk=lag - endif - - if(ccf(lag).lt.ccfmin) then - ccfmin=ccf(lag) - lagmin=lag - endif - enddo - - ccf0=ccfmax - flip=1.0 - if(-ccfmin.gt.ccfmax) then - do lag=lag1,lag2 - ccf(lag)=-ccf(lag) - enddo - lagpk=lagmin - ccf0=-ccfmin - flip=-1.0 - endif - - return -end subroutine xcor4