82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 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 |