WSJT-X/lib/twkfreq.f90

31 lines
666 B
Fortran

subroutine twkfreq(c3,c4,npts,fsample,a)
! Adjust frequency of complex data
! a(1) Hz
! a(2) Hz/(0.5*TxT), where TxT = npts/fsample = file duration
complex c3(npts)
complex c4(npts)
complex w,wstep
real a(3)
data twopi/6.283185307/
! Mix the complex signal
w=1.0
wstep=1.0
x0=0.5*(npts+1)
s=2.0/npts
do i=1,npts
x=s*(i-x0)
p2=1.5*x*x - 0.5
! p3=2.5*(x**3) - 1.5*x
! p4=4.375*(x**4) - 3.75*(x**2) + 0.375
dphi=(a(1) + x*a(2) + p2*a(3)) * (twopi/fsample)
wstep=cmplx(cos(dphi),sin(dphi))
w=w*wstep
c4(i)=w*c3(i)
enddo
return
end subroutine twkfreq