82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| subroutine sync9w(ss,nzhsym,lag1,lag2,ia,ib,ccfred,ccfblue,ipkbest,lagpk,nadd)
 | |
| 
 | |
|   include 'constants.f90'
 | |
|   real ss(184,NSMAX)
 | |
|   real ss1(184),ss1save(184)
 | |
|   real ccfred(NSMAX)
 | |
|   real ccfblue(-9:18)
 | |
|   real sa(NSMAX),sb(NSMAX)
 | |
|   include 'jt9sync.f90'
 | |
| 
 | |
| ! Smooth the symbol spectra (by an amount consistent with measured width??)
 | |
|   do j=1,nzhsym
 | |
|      sa=ss(j,1:NSMAX)
 | |
|      call smo(sa,NSMAX,sb,nadd)
 | |
|      call smo(sb,NSMAX,sa,nadd)
 | |
|      ss(j,1:NSMAX)=sa
 | |
|   enddo
 | |
| 
 | |
|   ipk=0
 | |
|   ipkbest=0
 | |
|   sbest=0.
 | |
|   ccfred=0.
 | |
|   df=12000.0/16384.0
 | |
| 
 | |
|   do i=ia,ib                                 !Loop over specified freq range
 | |
|      ss1=ss(1:184,i)                         !Symbol amplitudes at this freq
 | |
|      call pctile(ss1,nzhsym,50,xmed)         !Median level at this freq
 | |
|      ss1=ss1/xmed - 1.0
 | |
| 
 | |
|      smax=0.                                 !Find DT in specified range
 | |
|      do lag=lag1,lag2
 | |
|         sum1=0.
 | |
|         nsum=nzhsym
 | |
|         do j=1,16                            !Sum over 16 sync symbols
 | |
|            k=ii2(j) + lag
 | |
|            if(k.ge.1 .and. k.le.nzhsym) then
 | |
|               sum1=sum1 + ss1(k)
 | |
|               nsum=nsum-1
 | |
|            endif
 | |
|         enddo
 | |
|         if(sum1.gt.smax) then
 | |
|            smax=sum1
 | |
|            ipk=i 
 | |
|         endif
 | |
|      enddo
 | |
| 
 | |
|      ccfred(i)=smax                        !Best at this freq, over all lags
 | |
|      if(smax.gt.sbest) then
 | |
|         sbest=smax
 | |
|         ipkbest=ipk
 | |
|         ss1save=ss1
 | |
|      endif
 | |
|   enddo
 | |
| 
 | |
|   call pctile(ccfred(ia),ib-ia+1,50,xmed)
 | |
|   if(xmed.le.0.0) xmed=1.0
 | |
|   ccfred=ccfred/xmed
 | |
| 
 | |
|   ss1=ss1save
 | |
|   smax=0.                                 !Find DT in specified range
 | |
|   do lag=lag1,lag2
 | |
|      sum1=0.
 | |
|      nsum=nzhsym
 | |
|      do j=1,16                            !Sum over 16 sync symbols
 | |
|         k=ii2(j) + lag
 | |
|         if(k.ge.1 .and. k.le.nzhsym) then
 | |
|            sum1=sum1 + ss1(k)
 | |
|            nsum=nsum-1
 | |
|         endif
 | |
|      enddo
 | |
|      ccfblue(lag)=sum1
 | |
|      if(sum1.gt.smax) then
 | |
|         smax=sum1
 | |
|         lagpk=lag
 | |
|      endif
 | |
|   enddo
 | |
|   if(lagpk.eq.-9) lagpk=-8                !Protect the ends of ccfblue()
 | |
|   if(lagpk.eq.18) lagpk=17
 | |
| 
 | |
|   return
 | |
| end subroutine sync9w
 | 
