mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 
								 | 
							
								subroutine symspec65(dd,npts,ss,nhsym,savg)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! Compute JT65 symbol spectra at half-symbol steps
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  parameter (NFFT=8192)
							 | 
						||
| 
								 | 
							
								  parameter (NSZ=3413)                         !NFFT*5000/12000
							 | 
						||
| 
								 | 
							
								  parameter (MAXHSYM=322)
							 | 
						||
| 
								 | 
							
								  real*8 hstep
							 | 
						||
| 
								 | 
							
								  real*4 dd(npts)
							 | 
						||
| 
								 | 
							
								  real*4 ss(MAXHSYM,NSZ)
							 | 
						||
| 
								 | 
							
								  real*4 savg(NSZ)
							 | 
						||
| 
								 | 
							
								  real*4 x(NFFT)
							 | 
						||
| 
								 | 
							
								  complex c(0:NFFT/2)
							 | 
						||
| 
								 | 
							
								  common/refspec/dfref,ref(NSZ)
							 | 
						||
| 
								 | 
							
								  equivalence (x,c)
							 | 
						||
| 
								 | 
							
								  save /refspec/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  hstep=2048.d0*12000.d0/11025.d0              !half-symbol = 2229.116 samples
							 | 
						||
| 
								 | 
							
								  nsps=nint(2*hstep)
							 | 
						||
| 
								 | 
							
								  df=12000.0/NFFT
							 | 
						||
| 
								 | 
							
								  nhsym=npts/hstep - 1.0
							 | 
						||
| 
								 | 
							
								  savg=0.
							 | 
						||
| 
								 | 
							
								  fac1=1.e-3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  do j=1,nhsym
							 | 
						||
| 
								 | 
							
								     i0=(j-1)*hstep
							 | 
						||
| 
								 | 
							
								     x(1:nsps)=fac1*dd(i0+1:i0+nsps)
							 | 
						||
| 
								 | 
							
								     x(nsps+1:)=0.
							 | 
						||
| 
								 | 
							
								     call four2a(c,NFFT,1,-1,0)                !r2c forward FFT
							 | 
						||
| 
								 | 
							
								     do i=1,NSZ
							 | 
						||
| 
								 | 
							
								        s=real(c(i))**2 + aimag(c(i))**2
							 | 
						||
| 
								 | 
							
								        ss(j,i)=s
							 | 
						||
| 
								 | 
							
								        savg(i)=savg(i)+s
							 | 
						||
| 
								 | 
							
								     enddo
							 | 
						||
| 
								 | 
							
								  enddo
							 | 
						||
| 
								 | 
							
								  savg=savg/nhsym
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  call flat65(ss,nhsym,MAXHSYM,NSZ,ref)  !Flatten the 2d spectrum, saving
							 | 
						||
| 
								 | 
							
								  dfref=df                               ! the reference spectrum ref()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  savg=savg/ref
							 | 
						||
| 
								 | 
							
								  do j=1,nhsym
							 | 
						||
| 
								 | 
							
								     ss(j,1:NSZ)=ss(j,1:NSZ)/ref
							 | 
						||
| 
								 | 
							
								  enddo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return
							 | 
						||
| 
								 | 
							
								end subroutine symspec65
							 |