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