subroutine dopspread(c,fspread) parameter (NFFT=268800,NH=NFFT/2) complex c(0:NFFT-1) complex cspread(0:NFFT-1) df=12000.0/nfft twopi=8*atan(1.0) cspread(0)=1.0 cspread(NH)=0. b=6.0 !Lorenzian 3/28 onward do i=1,NH f=i*df x=b*f/fspread z=0. a=0. if(x.lt.3.0) then !Cutoff beyond x=3 a=sqrt(1.111/(1.0+x*x)-0.1) !Lorentzian call random_number(r1) phi1=twopi*r1 z=a*cmplx(cos(phi1),sin(phi1)) endif cspread(i)=z z=0. if(x.lt.50.0) then call random_number(r2) phi2=twopi*r2 z=a*cmplx(cos(phi2),sin(phi2)) endif cspread(NFFT-i)=z enddo izh=fspread/df do i=-izh,izh f=i*df j=i if(j.lt.0) j=j+nfft s=real(cspread(j))**2 + aimag(cspread(j))**2 ! write(23,3000) f,s,cspread(j) !3000 format(f10.3,3f12.6) enddo call four2a(cspread,NFFT,1,1,1) !Transform to time domain sum=0. do i=0,NFFT-1 p=real(cspread(i))**2 + aimag(cspread(i))**2 sum=sum+p enddo avep=sum/NFFT fac=sqrt(1.0/avep) cspread=fac*cspread !Normalize to constant avg power c=cspread*c !Apply Rayleigh fading to c() do i=0,NFFT-1 p=real(cspread(i))**2 + aimag(cspread(i))**2 ! write(24,3010) i,p,cspread(i) !3010 format(i8,3f12.6) enddo return end subroutine dopspread