mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			44 lines
		
	
	
		
			837 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			837 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 
								 | 
							
								subroutine lorentzian_fading(c,npts,fs,fspread)
							 | 
						||
| 
								 | 
							
								!
							 | 
						||
| 
								 | 
							
								! npts is the total length of the simulated data vector
							 | 
						||
| 
								 | 
							
								!
							 | 
						||
| 
								 | 
							
								  complex c(0:npts-1)
							 | 
						||
| 
								 | 
							
								  complex cspread(0:npts-1)
							 | 
						||
| 
								 | 
							
								  complex z
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  twopi=8.0*atan(1.0)
							 | 
						||
| 
								 | 
							
								  df=fs/npts
							 | 
						||
| 
								 | 
							
								  nh=npts/2
							 | 
						||
| 
								 | 
							
								  cspread(0)=1.0
							 | 
						||
| 
								 | 
							
								  cspread(nh)=0.
							 | 
						||
| 
								 | 
							
								  b=6.0
							 | 
						||
| 
								 | 
							
								  do i=1,nh
							 | 
						||
| 
								 | 
							
								     f=i*df
							 | 
						||
| 
								 | 
							
								     x=b*f/fspread
							 | 
						||
| 
								 | 
							
								     z=0.
							 | 
						||
| 
								 | 
							
								     a=0.
							 | 
						||
| 
								 | 
							
								     if(x.lt.3.0) then
							 | 
						||
| 
								 | 
							
								        a=sqrt(1.111/(1.0+x*x)-0.1)
							 | 
						||
| 
								 | 
							
								        phi1=twopi*rran()
							 | 
						||
| 
								 | 
							
								        z=a*cmplx(cos(phi1),sin(phi1))
							 | 
						||
| 
								 | 
							
								     endif
							 | 
						||
| 
								 | 
							
								     cspread(i)=z
							 | 
						||
| 
								 | 
							
								     z=0.
							 | 
						||
| 
								 | 
							
								     if(x.lt.3.0) then
							 | 
						||
| 
								 | 
							
								        phi2=twopi*rran()
							 | 
						||
| 
								 | 
							
								        z=a*cmplx(cos(phi2),sin(phi2))
							 | 
						||
| 
								 | 
							
								     endif
							 | 
						||
| 
								 | 
							
								     cspread(npts-i)=z
							 | 
						||
| 
								 | 
							
								  enddo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  call four2a(cspread,npts,1,1,1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  s=sum(abs(cspread)**2)
							 | 
						||
| 
								 | 
							
								  avep=s/npts
							 | 
						||
| 
								 | 
							
								  fac=sqrt(1.0/avep)
							 | 
						||
| 
								 | 
							
								  cspread=fac*cspread
							 | 
						||
| 
								 | 
							
								  c=cspread*c
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  return
							 | 
						||
| 
								 | 
							
								end subroutine lorentzian_fading
							 |