37 lines
		
	
	
		
			839 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			839 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| subroutine foxfilt(nslots,nfreq,width,wave)
 | |
| 
 | |
|   parameter (NN=79,ND=58,KK=87,NSPS=4*1920)
 | |
|   parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2)
 | |
|   real wave(NWAVE)
 | |
|   real x(NFFT)
 | |
|   complex cx(0:NH)
 | |
|   equivalence (x,cx)
 | |
| 
 | |
|   x(1:NWAVE)=wave
 | |
|   x(NWAVE+1:)=0.
 | |
|   call four2a(x,NFFT,1,-1,0)              !r2c
 | |
|   df=48000.0/NFFT
 | |
|   fa=nfreq - 0.5*6.25
 | |
|   fb=nfreq + 7.5*6.25 + (nslots-1)*60.0
 | |
|   ia2=nint(fa/df)
 | |
|   ib1=nint(fb/df)
 | |
|   ia1=nint(ia2-width/df)
 | |
|   ib2=nint(ib1+width/df)
 | |
|   pi=4.0*atan(1.0)
 | |
|   do i=ia1,ia2
 | |
|      fil=(1.0 + cos(pi*df*(i-ia2)/width))/2.0
 | |
|      cx(i)=fil*cx(i)
 | |
|   enddo
 | |
|   do i=ib1,ib2
 | |
|      fil=(1.0 + cos(pi*df*(i-ib1)/width))/2.0
 | |
|      cx(i)=fil*cx(i)
 | |
|   enddo
 | |
|   cx(0:ia1-1)=0.
 | |
|   cx(ib2+1:)=0.
 | |
| 
 | |
|   call four2a(cx,nfft,1,1,-1)                  !c2r
 | |
|   wave=x(1:NWAVE)/nfft
 | |
| 
 | |
|   return
 | |
| end subroutine foxfilt
 | 
