mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-29 12:52:28 -04:00
Working toward functionality for sequence lengths other than 60 s.
This commit is contained in:
parent
b68ccee2fa
commit
687d60019e
@ -2,20 +2,17 @@ subroutine ana64(dd,npts,c0)
|
|||||||
|
|
||||||
use timer_module, only: timer
|
use timer_module, only: timer
|
||||||
|
|
||||||
parameter (NMAX=60*12000) !Max size of raw data at 12000 Hz
|
real dd(npts) !Raw data at 12000 Hz
|
||||||
real dd(NMAX) !Raw data
|
complex c0(0:npts-1) !Complex data at 6000 Hz
|
||||||
complex c0(0:720000) !Complex spectrum of dd()
|
|
||||||
save
|
save
|
||||||
|
|
||||||
! nfft1=672000
|
nfft1=npts
|
||||||
nfft1=720000
|
|
||||||
nfft2=nfft1/2
|
nfft2=nfft1/2
|
||||||
df1=12000.0/nfft1
|
df1=12000.0/nfft1
|
||||||
fac=2.0/nfft1
|
fac=2.0/nfft1
|
||||||
c0(0:npts-1)=fac*dd(1:npts)
|
c0(0:npts-1)=fac*dd(1:npts)
|
||||||
c0(npts:nfft1)=0.
|
|
||||||
call four2a(c0,nfft1,1,-1,1) !Forward c2c FFT
|
call four2a(c0,nfft1,1,-1,1) !Forward c2c FFT
|
||||||
c0(nfft2/2+1:nfft2)=0.
|
c0(nfft2/2+1:nfft2-1)=0.
|
||||||
c0(0)=0.5*c0(0)
|
c0(0)=0.5*c0(0)
|
||||||
call four2a(c0,nfft2,1,1,1) !Inverse c2c FFT; c0 is analytic sig
|
call four2a(c0,nfft2,1,1,1) !Inverse c2c FFT; c0 is analytic sig
|
||||||
|
|
||||||
|
@ -61,8 +61,9 @@ subroutine qra64a(dd,npts,nf1,nf2,nfqso,ntol,mode64,minsync,ndepth, &
|
|||||||
nfreq=nint(f0)
|
nfreq=nint(f0)
|
||||||
if(mode64.eq.1 .and. minsync.ne.-1 .and. (sync-7.0).lt.minsync) go to 900
|
if(mode64.eq.1 .and. minsync.ne.-1 .and. (sync-7.0).lt.minsync) go to 900
|
||||||
|
|
||||||
|
nsps=6912
|
||||||
call timer('qraloops',0)
|
call timer('qraloops',0)
|
||||||
call qra_loops(c00,npts/2,64,mode64,nsubmode,nFadingModel, &
|
call qra_loops(c00,npts/2,nsps,64,mode64,nsubmode,nFadingModel, &
|
||||||
ndepth,nc1,nc2,ng2,naptype,jpk0,dtx,f0,width,snr2,irc,dat4)
|
ndepth,nc1,nc2,ng2,naptype,jpk0,dtx,f0,width,snr2,irc,dat4)
|
||||||
call timer('qraloops',1)
|
call timer('qraloops',1)
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ contains
|
|||||||
nmode=65
|
nmode=65
|
||||||
call ana64(dd,npts,c00)
|
call ana64(dd,npts,c00)
|
||||||
call timer('qraloops',0)
|
call timer('qraloops',0)
|
||||||
call qra_loops(c00,npts/2,nmode,mode65,nsubmode,nFadingModel, &
|
call qra_loops(c00,npts/2,nsps/2,nmode,mode65,nsubmode,nFadingModel, &
|
||||||
ndepth,nc1,nc2,ng2,naptype,jpk0,xdt,f0,width,snr2,irc,dat4)
|
ndepth,nc1,nc2,ng2,naptype,jpk0,xdt,f0,width,snr2,irc,dat4)
|
||||||
call timer('qraloops',1)
|
call timer('qraloops',1)
|
||||||
snr2=snr2 + db(6912.0/nsps)
|
snr2=snr2 + db(6912.0/nsps)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
subroutine qra_loops(c00,npts2,mode,mode64,nsubmode,nFadingModel, &
|
subroutine qra_loops(c00,npts2,nsps,mode,mode64,nsubmode,nFadingModel, &
|
||||||
ndepth,nc1,nc2,ng2,naptype,jpk0,xdt,f0,width,snr2,irc,dat4)
|
ndepth,nc1,nc2,ng2,naptype,jpk0,xdt,f0,width,snr2,irc,dat4)
|
||||||
|
|
||||||
use packjt
|
use packjt
|
||||||
@ -26,8 +26,6 @@ subroutine qra_loops(c00,npts2,mode,mode64,nsubmode,nFadingModel, &
|
|||||||
NN=63
|
NN=63
|
||||||
napmin=99
|
napmin=99
|
||||||
ncall=0
|
ncall=0
|
||||||
nsps=3456 !QRA64
|
|
||||||
if(mode.eq.65) nsps=3840 !QRA65 ### Is 3840 too big? ###
|
|
||||||
maxdist=5
|
maxdist=5
|
||||||
if(ndepth.eq.2) maxdist=10
|
if(ndepth.eq.2) maxdist=10
|
||||||
if(ndepth.eq.3) maxdist=30
|
if(ndepth.eq.3) maxdist=30
|
||||||
@ -121,7 +119,7 @@ subroutine qra_loops(c00,npts2,mode,mode64,nsubmode,nFadingModel, &
|
|||||||
ndist=ndistx
|
ndist=ndistx
|
||||||
endif
|
endif
|
||||||
|
|
||||||
200 if(mode.eq.65) xdt=xdt+0.4 !### Empirical -- WHY ??? ###
|
200 if(mode.eq.65 .and. nsps.eq.7680/2) xdt=xdt+0.4 !### Empirical -- WHY ??? ###
|
||||||
|
|
||||||
if(irc.ge.0) then
|
if(irc.ge.0) then
|
||||||
navg=nsave
|
navg=nsave
|
||||||
|
@ -18,7 +18,7 @@ subroutine sync_qra65(iwave,nmax,mode65,nsps,nfqso,ntol,xdt,f0,snr1)
|
|||||||
integer ijpk(2) !Indices i and j at peak of ccf
|
integer ijpk(2) !Indices i and j at peak of ccf
|
||||||
real, allocatable :: s1(:,:) !Symbol spectra, quarter-symbol steps
|
real, allocatable :: s1(:,:) !Symbol spectra, quarter-symbol steps
|
||||||
real sync(85) !sync vector
|
real sync(85) !sync vector
|
||||||
real ccf(-64:64,-26:107) !CCF(freq,time)
|
real ccf(-64:64,-53:214) !CCF(freq,time)
|
||||||
complex, allocatable :: c0(:) !Complex spectrum of symbol
|
complex, allocatable :: c0(:) !Complex spectrum of symbol
|
||||||
data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/
|
data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/
|
||||||
data sync(1)/99.0/
|
data sync(1)/99.0/
|
||||||
@ -94,10 +94,10 @@ subroutine sync_qra65(iwave,nmax,mode65,nsps,nfqso,ntol,xdt,f0,snr1)
|
|||||||
|
|
||||||
ijpk=maxloc(ccf)
|
ijpk=maxloc(ccf)
|
||||||
ipk=ijpk(1)-65
|
ipk=ijpk(1)-65
|
||||||
jpk=ijpk(2)-27
|
jpk=ijpk(2)-54
|
||||||
f0=nfqso + ipk*df
|
f0=nfqso + ipk*df
|
||||||
xdt=jpk*dtstep
|
xdt=jpk*dtstep
|
||||||
|
|
||||||
sq=0.
|
sq=0.
|
||||||
nsq=0
|
nsq=0
|
||||||
do j=lag1,lag2
|
do j=lag1,lag2
|
||||||
@ -115,10 +115,9 @@ subroutine sync_qra65(iwave,nmax,mode65,nsps,nfqso,ntol,xdt,f0,snr1)
|
|||||||
!3055 format(i5,f8.3,f10.3)
|
!3055 format(i5,f8.3,f10.3)
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
! ncall=ncall+1
|
|
||||||
! do i=-ia,ia
|
! do i=-ia,ia
|
||||||
! write(56,3056) ncall,i*df,ncall+0.3*ccf(i,0)/rms
|
! write(56,3056) i*df,ccf(i,0)/rms
|
||||||
!3056 format(i6,f7.2,f10.3)
|
!3056 format(2f10.3)
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user