| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  | 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)
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |   real*4 w(NFFT)
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  |   complex c(0:NFFT/2)
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |   logical first
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  |   common/refspec/dfref,ref(NSZ)
 | 
					
						
							|  |  |  |   equivalence (x,c)
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |   data first/.true./
 | 
					
						
							|  |  |  |   save /refspec/,first,w
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   hstep=2048.d0*12000.d0/11025.d0              !half-symbol = 2229.116 samples
 | 
					
						
							|  |  |  |   nsps=nint(2*hstep)
 | 
					
						
							|  |  |  |   df=12000.0/NFFT
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |   nhsym=(npts-NFFT)/hstep
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  |   savg=0.
 | 
					
						
							|  |  |  |   fac1=1.e-3
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |   if(first) then
 | 
					
						
							|  |  |  | ! Compute the FFT window
 | 
					
						
							|  |  |  |      pi=4.0*atan(1.0)
 | 
					
						
							|  |  |  |      width=0.25*nsps
 | 
					
						
							|  |  |  |      do i=1,NFFT
 | 
					
						
							|  |  |  |         z=(i-NFFT/2)/width
 | 
					
						
							|  |  |  |         w(i)=exp(-z*z)
 | 
					
						
							|  |  |  |       enddo
 | 
					
						
							|  |  |  |      first=.false.
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  |   do j=1,nhsym
 | 
					
						
							|  |  |  |      i0=(j-1)*hstep
 | 
					
						
							| 
									
										
										
										
											2015-02-11 00:50:35 +00:00
										 |  |  |      x=fac1*w*dd(i0+1:i0+NFFT)
 | 
					
						
							| 
									
										
										
										
											2013-07-08 13:17:22 +00:00
										 |  |  |      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
 |