36 lines
		
	
	
		
			998 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			998 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
|   | subroutine spec4(c,s,savg)
 | ||
|  | 
 | ||
|  |   parameter (KK=84)                     !Information bits (72 + CRC12)
 | ||
|  |   parameter (ND=84)                     !Data symbols: LDPC (168,84), r=1/2
 | ||
|  |   parameter (NS=12)                     !Sync symbols (3 @ 4x4 Costas arrays)
 | ||
|  |   parameter (NR=2)                      !Ramp up/down
 | ||
|  |   parameter (NN=NR+NS+ND)               !Total symbols (98)
 | ||
|  |   parameter (NSPS=2688/84)              !Samples per symbol (32)
 | ||
|  |   parameter (NZ=NSPS*NN)                !Samples in baseband waveform (3760)
 | ||
|  |   parameter (NFFT=2*NSPS,NH=NSPS)
 | ||
|  | 
 | ||
|  |   complex c(0:NZ-1)
 | ||
|  |   complex c1(0:NFFT-1)
 | ||
|  |   real s(0:NH,NN)
 | ||
|  |   real savg(0:NH)
 | ||
|  | 
 | ||
|  |   fs=12000.0/84.0
 | ||
|  |   df=fs/NFFT
 | ||
|  |   savg=0.
 | ||
|  |   do j=1,NN
 | ||
|  |      ia=(j-1)*NSPS
 | ||
|  |      ib=ia + NSPS-1
 | ||
|  |      c1(0:NSPS-1)=c(ia:ib)
 | ||
|  |      c1(NSPS:)=0.
 | ||
|  |      call four2a(c1,NFFT,1,-1,1)
 | ||
|  |      do k=1,NSPS
 | ||
|  |         s(k,j)=real(c1(k))**2 + aimag(c1(k))**2
 | ||
|  |      enddo
 | ||
|  |      savg=savg+s(0:NH,j)
 | ||
|  |   enddo
 | ||
|  |   s=s/NZ
 | ||
|  |   savg=savg/(NN*NZ)
 | ||
|  | 
 | ||
|  |   return
 | ||
|  | end subroutine spec4
 |