1subroutine get_spectrum_baseline(dd,nfa,nfb,sbase) 2 3 include 'ft8_params.f90' 4 parameter(NST=NFFT1/2,NF=93) !NF=NMAX/NST-1 5 real s(NH1,NF) 6 real savg(NH1) 7 real sbase(NH1) 8 real x(NFFT1) 9 real window(NFFT1) 10 complex cx(0:NH1) 11 real dd(NMAX) 12 equivalence (x,cx) 13 logical first 14 data first/.true./ 15 save first,window 16 17 if(first) then 18 first=.false. 19 pi=4.0*atan(1.) 20 window=0. 21 call nuttal_window(window,NFFT1) 22 window=window/sum(window)*NSPS*2/300.0 23 endif 24 25! Compute symbol spectra, stepping by NSTEP steps. 26 savg=0. 27 df=12000.0/NFFT1 28 do j=1,NF 29 ia=(j-1)*NST + 1 30 ib=ia+NFFT1-1 31 if(ib.gt.NMAX) exit 32 x=dd(ia:ib)*window 33 call four2a(x,NFFT1,1,-1,0) !r2c FFT 34 s(1:NH1,j)=abs(cx(1:NH1))**2 35 savg=savg + s(1:NH1,j) !Average spectrum 36 enddo 37 38 nwin=nfb-nfa 39 if(nfa.lt.100) then 40 nfa=100 41 if(nwin.lt.100) then ! nagain 42 nfb=nfa+nwin 43 endif 44 endif 45 if(nfb.gt.4910) then 46 nfb=4910 47 if(nwin.lt.100) then 48 nfa=nfb-nwin 49 endif 50 endif 51 call baseline(savg,nfa,nfb,sbase) 52 53return 54end subroutine get_spectrum_baseline 55