48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 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
 | 
