mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-28 11:30:25 -04:00 
			
		
		
		
	
		
			
	
	
		
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
|  | program fmtave
 | ||
|  | 
 | ||
|  | ! Average groups of frequency-calibration measurements.
 | ||
|  |   
 | ||
|  |   implicit real*8 (a-h,o-z)
 | ||
|  |   character infile*80
 | ||
|  |   character*8 cutc,cutc1
 | ||
|  | 
 | ||
|  |   nargs=iargc()
 | ||
|  |   if(nargs.ne.1) then
 | ||
|  |      print*,'Usage:   fmtave <infile>'
 | ||
|  |      print*,'Example: fmtave fmt.all'
 | ||
|  |      go to 999
 | ||
|  |   endif
 | ||
|  |   call getarg(1,infile)
 | ||
|  | 
 | ||
|  |   open(10,file=infile,status='old')
 | ||
|  |   open(12,file='fmtave.out',status='unknown')
 | ||
|  | 
 | ||
|  |   write(*,1000)
 | ||
|  | 1000 format('    Freq     DF    CAL   N     rms    UTC     Call'/       &
 | ||
|  |             '   (kHz)    (Hz)    ?         (Hz)'/                       &
 | ||
|  |             '----------------------------------------------------')
 | ||
|  |   nkhz0=0
 | ||
|  |   sum=0.d0
 | ||
|  |   sumsq=0.d0
 | ||
|  |   n=0
 | ||
|  |   do i=1,99999
 | ||
|  |      read(10,*,end=10) cutc,nkHz,ncal,noffset,faudio,df,dblevel,snr
 | ||
|  |      if((nkHz.ne.nkHz0) .and. i.ne.1) then
 | ||
|  |         ave=sum/n
 | ||
|  |         rms=0.d0
 | ||
|  |         if(n.gt.1) then
 | ||
|  |            rms=sqrt(abs(sumsq - sum*sum/n)/(n-1.d0))
 | ||
|  |         endif
 | ||
|  |         fMHz=0.001d0*nkHz0
 | ||
|  |         write(*,1010)  fMHz,ave,ncal0,n,rms,cutc1
 | ||
|  |         write(12,1010) fMHz,ave,ncal0,n,rms,cutc1
 | ||
|  | 1010    format(f8.3,f9.3,i4,i5,f8.2,2x,a8,2x,a6)
 | ||
|  |         sum=0.d0
 | ||
|  |         sumsq=0.d0
 | ||
|  |         n=0
 | ||
|  |      endif
 | ||
|  |      dial_error=faudio-noffset
 | ||
|  |      sum=sum + dial_error
 | ||
|  |      sumsq=sumsq + dial_error**2
 | ||
|  |      n=n+1
 | ||
|  |      if(n.eq.1) then
 | ||
|  |         cutc1=cutc
 | ||
|  |         ncal0=ncal
 | ||
|  |      endif
 | ||
|  |      nkHz0=nkHz
 | ||
|  |   enddo
 | ||
|  | 
 | ||
|  | 10 ave=sum/n
 | ||
|  |   rms=0.d0
 | ||
|  |   if(n.gt.0) then
 | ||
|  |      rms=sqrt((sumsq - sum*sum/n)/(n-1.d0))
 | ||
|  |   endif
 | ||
|  |   fMHz=0.001d0*nkHz
 | ||
|  |   write(*,1010)  fMHz,ave,ncal,n,rms,cutc1
 | ||
|  |   write(12,1010) fMHz,ave,ncal,n,rms,cutc1
 | ||
|  | 
 | ||
|  | 999 end program fmtave
 |