WSJT-X/lib/fsk4hf/wspr_fsk8_downsample.f90

28 lines
675 B
Fortran

subroutine wspr_fsk8_downsample(iwave,c)
! Input: i*2 data in iwave() at sample rate 12000 Hz
! Output: Complex data in c(), sampled at 12000/24=500 Hz
include 'wspr_fsk8_params.f90'
integer*2 iwave(NMAX)
complex c(0:NMAXD-1)
complex c1(0:NMAXD-1)
complex cx(0:NMAX/2)
real x(NMAX)
equivalence (x,cx)
df=12000.0/NMAX
x=iwave
call four2a(x,NMAX,1,-1,0) !r2c FFT to freq domain
i0=nint(1500.0/df)
c1(0)=cx(i0)
do i=1,NMAXD/2
c1(i)=cx(i0+i)
c1(NMAXD-i)=cx(i0-i)
enddo
c=c1/NMAXD
call four2a(c,NMAXD,1,1,1) !c2c FFT back to time domain
return
end subroutine wspr_fsk8_downsample