mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-06-02 14:52:25 -04:00
Working toward multi-decode capability.
This commit is contained in:
parent
6519c07a71
commit
86ada8c9d4
@ -135,18 +135,12 @@ contains
|
|||||||
call timer('q65_dec0',1)
|
call timer('q65_dec0',1)
|
||||||
|
|
||||||
if(idec.ge.0) then
|
if(idec.ge.0) then
|
||||||
dtdec=xdt !We have a list-decode result
|
dtdec=xdt !We have a list-decode result at nfqso
|
||||||
f0dec=f0
|
f0dec=f0
|
||||||
go to 100
|
go to 100
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! if(snr1.lt.2.8) then
|
! Prepare for a single-period decode with iaptype = 0, 1, 2, or 4
|
||||||
! dtdec=0. !No reliable sync, abandon decoding attempt
|
|
||||||
! f0dec=0.
|
|
||||||
! go to 100
|
|
||||||
! endif
|
|
||||||
|
|
||||||
! Prepare for a single-period decode woth iaptype = 0, 1, or 2 (also 4?)
|
|
||||||
jpk0=(xdt+1.0)*6000 !Index of nominal start of signal
|
jpk0=(xdt+1.0)*6000 !Index of nominal start of signal
|
||||||
if(ntrperiod.le.30) jpk0=(xdt+0.5)*6000 !For shortest sequences
|
if(ntrperiod.le.30) jpk0=(xdt+0.5)*6000 !For shortest sequences
|
||||||
if(jpk0.lt.0) jpk0=0
|
if(jpk0.lt.0) jpk0=0
|
||||||
@ -203,7 +197,7 @@ contains
|
|||||||
go to 100
|
go to 100
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! There was no 'q3n' decode. Try for a 'q[012]n' decode.
|
! There was no 'q3n' decode. Try for a 'q[0124]n' decode.
|
||||||
! Call top-level routine in q65 module: establish sync and try for a q[012]n
|
! Call top-level routine in q65 module: establish sync and try for a q[012]n
|
||||||
! decode, this time using the cumulative 's1a' symbol spectra.
|
! decode, this time using the cumulative 's1a' symbol spectra.
|
||||||
|
|
||||||
@ -268,6 +262,11 @@ contains
|
|||||||
endif
|
endif
|
||||||
navg0=1000*navg(0) + navg(1)
|
navg0=1000*navg(0) + navg(1)
|
||||||
|
|
||||||
|
! do icand=1,ncand
|
||||||
|
! write(72,3072) icand,candidates(icand,1:3)
|
||||||
|
!3072 format(i2,3f10.3)
|
||||||
|
! enddo
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine decode
|
end subroutine decode
|
||||||
|
|
||||||
|
@ -12,10 +12,11 @@ module q65
|
|||||||
integer codewords(63,206)
|
integer codewords(63,206)
|
||||||
integer ibwa,ibwb,ncw,nsps,mode_q65,nfa,nfb
|
integer ibwa,ibwb,ncw,nsps,mode_q65,nfa,nfb
|
||||||
integer idf,idt,ibw
|
integer idf,idt,ibw
|
||||||
integer istep,nsmo,lag1,lag2,npasses,nused,iseq
|
integer istep,nsmo,lag1,lag2,npasses,nused,iseq,ncand
|
||||||
integer i0,j0
|
integer i0,j0
|
||||||
integer navg(0:1)
|
integer navg(0:1)
|
||||||
logical lnewdat
|
logical lnewdat
|
||||||
|
real candidates(20,3) !snr, xdt, and f0 of top candidates
|
||||||
real,allocatable,save :: s1a(:,:,:) !Cumulative symbol spectra
|
real,allocatable,save :: s1a(:,:,:) !Cumulative symbol spectra
|
||||||
real sync(85) !sync vector
|
real sync(85) !sync vector
|
||||||
real df,dtstep,dtdec,f0dec,ftol
|
real df,dtstep,dtdec,f0dec,ftol
|
||||||
@ -394,8 +395,11 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ipk,jpk,f0,xdt,ccf2)
|
|||||||
real s1(iz,jz)
|
real s1(iz,jz)
|
||||||
real ccf2(iz) !Orange sync curve
|
real ccf2(iz) !Orange sync curve
|
||||||
real, allocatable :: xdt2(:)
|
real, allocatable :: xdt2(:)
|
||||||
|
integer, allocatable :: indx(:)
|
||||||
|
|
||||||
allocate(xdt2(iz))
|
allocate(xdt2(iz))
|
||||||
|
allocate(indx(iz))
|
||||||
|
|
||||||
ccfbest=0.
|
ccfbest=0.
|
||||||
ibest=0
|
ibest=0
|
||||||
lagpk=0
|
lagpk=0
|
||||||
@ -425,11 +429,29 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ipk,jpk,f0,xdt,ccf2)
|
|||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
! Parameters for the top candidate:
|
||||||
ipk=ibest - i0
|
ipk=ibest - i0
|
||||||
jpk=lagbest
|
jpk=lagbest
|
||||||
f0=nfqso + ipk*df
|
f0=nfqso + ipk*df
|
||||||
xdt=jpk*dtstep
|
xdt=jpk*dtstep
|
||||||
|
|
||||||
|
! Save parameters for best candidates
|
||||||
|
i1=nfa/df
|
||||||
|
i2=nfb/df
|
||||||
|
jzz=i2-i1+1
|
||||||
|
call pctile(ccf2(i1:i2),jzz,40,base)
|
||||||
|
ccf2=ccf2/base
|
||||||
|
call indexx(ccf2(i1:i2),jzz,indx)
|
||||||
|
ncand=0
|
||||||
|
do j=1,20
|
||||||
|
i=indx(jzz-j+1)+i1-1
|
||||||
|
if(ccf2(i).lt.3.0) exit
|
||||||
|
ncand=ncand+1
|
||||||
|
candidates(ncand,1)=ccf2(i)
|
||||||
|
candidates(ncand,2)=xdt2(i)
|
||||||
|
candidates(ncand,3)=i*df
|
||||||
|
enddo
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine q65_ccf_22
|
end subroutine q65_ccf_22
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user