Initial Commit
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
subroutine wspr_downsample(id2,k)
|
||||
|
||||
! Input:
|
||||
! id2 raw 16-bit integer data, 12000 Hz sample rate
|
||||
! k pointer to the most recent new data
|
||||
|
||||
! Output (in common/c0com)
|
||||
! c0 complex data downsampled to 1500 Hz
|
||||
|
||||
parameter (NMAX=120*12000) !Total sample intervals per 30 minutes
|
||||
parameter (NDMAX=120*1500) !Sample intervals at 1500 Hz rate
|
||||
parameter (NSMAX=1366) !Max length of saved spectra
|
||||
parameter (NFFT1=1024)
|
||||
parameter (MAXFFT3=32768)
|
||||
real*4 w3(MAXFFT3)
|
||||
real*4 x0(NFFT1)
|
||||
real*4 x2(NFFT1+105)
|
||||
real*4 ssum(NSMAX)
|
||||
integer*2 id2(NMAX)
|
||||
complex c0
|
||||
common/c0com/c0(NDMAX)
|
||||
data rms/999.0/,k0/99999999/,nfft3z/0/,nsps/8192/,nbfo/1500/
|
||||
save
|
||||
|
||||
nfft3=nsps/4
|
||||
jstep=nsps/16
|
||||
if(k.gt.NMAX) go to 999
|
||||
if(k.lt.nfft3) go to 999 !Wait for enough samples to start
|
||||
if(nfft3.ne.nfft3z) then
|
||||
pi=4.0*atan(1.0)
|
||||
do i=1,nfft3
|
||||
w3(i)=2.0*(sin(i*pi/nfft3))**2 !Window for nfft3
|
||||
enddo
|
||||
nfft3z=nfft3
|
||||
endif
|
||||
|
||||
if(k.lt.k0) then
|
||||
ja=0
|
||||
ssum=0.
|
||||
k1=0
|
||||
k8=0
|
||||
x2=0.
|
||||
! if(ndiskdat.eq.0) then
|
||||
! id2(k+1:)=0
|
||||
! c0=0. !This is necessary to prevent "ghosts". Not sure why.
|
||||
! endif
|
||||
endif
|
||||
k0=k
|
||||
|
||||
nzap=0
|
||||
nbslider=0
|
||||
sigmas=1.0*(10.0**(0.01*nbslider)) + 0.7
|
||||
peaklimit=sigmas*max(10.0,rms)
|
||||
px=0.
|
||||
|
||||
nwindow=2
|
||||
kstep1=NFFT1
|
||||
if(nwindow.ne.0) kstep1=NFFT1/2
|
||||
fac=2.0/NFFT1
|
||||
nblks=(k-k1)/kstep1
|
||||
gain=1.0
|
||||
nb=0
|
||||
do nblk=1,nblks
|
||||
do i=1,NFFT1
|
||||
x0(i)=gain*id2(k1+i)
|
||||
enddo
|
||||
! call timf2(x0,k,NFFT1,nwindow,nb,peaklimit,x1, &
|
||||
! slimit,lstrong,px,nzap)
|
||||
! Mix at nbfo Hz, lowpass at +/-750 Hz, and downsample to 1500 Hz complex.
|
||||
call mixlpf(x0,nbfo,c0(k8+1))
|
||||
k1=k1+kstep1
|
||||
k8=k8+kstep1/8
|
||||
enddo
|
||||
|
||||
999 return
|
||||
end subroutine wspr_downsample
|
||||
Reference in New Issue
Block a user