48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine getfc1w(c,fs,fa,fb,fc1,xsnr) | ||
|  | 
 | ||
|  |   include 'wsprlf_params.f90' | ||
|  |   complex c(0:NZ-1)                     !Complex waveform | ||
|  |   complex c2(0:NFFT1-1)                 !Short spectra | ||
|  |   real s(-NH1+1:NH1)                    !Coarse spectrum | ||
|  |   nspec=NZ/NFFT1 | ||
|  |   df1=fs/NFFT1 | ||
|  |   s=0. | ||
|  |   do k=1,nspec | ||
|  |      ia=(k-1)*N2 | ||
|  |      ib=ia+N2-1 | ||
|  |      c2(0:N2-1)=c(ia:ib) | ||
|  |      c2(N2:)=0. | ||
|  |      call four2a(c2,NFFT1,1,-1,1) | ||
|  |      do i=0,NFFT1-1 | ||
|  |         j=i | ||
|  |         if(j.gt.NH1) j=j-NFFT1 | ||
|  |         s(j)=s(j) + real(c2(i))**2 + aimag(c2(i))**2 | ||
|  |      enddo | ||
|  |   enddo | ||
|  | !        call smo121(s,NFFT1) | ||
|  |   smax=0. | ||
|  |   ipk=0 | ||
|  |   fc1=0. | ||
|  |   ia=nint(fa/df1) | ||
|  |   ib=nint(fb/df1) | ||
|  |   do i=ia,ib | ||
|  |      f=i*df1 | ||
|  |      if(s(i).gt.smax) then | ||
|  |         smax=s(i) | ||
|  |         ipk=i | ||
|  |         fc1=f | ||
|  |      endif | ||
|  | !            write(51,3001) f,s(i),db(s(i)) | ||
|  | ! 3001       format(f10.3,e12.3,f10.3) | ||
|  |   enddo | ||
|  | 
 | ||
|  | ! The following is for testing SNR calibration: | ||
|  |   sp3n=(s(ipk-1)+s(ipk)+s(ipk+1))               !Sig + 3*noise | ||
|  |   base=(sum(s)-sp3n)/(NFFT1-3.0)                !Noise per bin | ||
|  |   psig=sp3n-3*base                              !Sig only | ||
|  |   pnoise=(2500.0/df1)*base                      !Noise in 2500 Hz | ||
|  |   xsnr=db(psig/pnoise) | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine getfc1w |