mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-09-04 06:07:50 -04:00
Changes to enable Fast and Normal decode settings. NB - max number of candidates has been increased to 20.
This commit is contained in:
parent
0e935f0cf7
commit
f03f411733
@ -1,4 +1,4 @@
|
|||||||
subroutine get_fst280_bitmetrics(cd,nss,hmod,bitmetrics,badsync)
|
subroutine get_fst280_bitmetrics(cd,nss,hmod,nmax,bitmetrics,badsync)
|
||||||
|
|
||||||
include 'fst280_params.f90'
|
include 'fst280_params.f90'
|
||||||
complex cd(0:NN*nss-1)
|
complex cd(0:NN*nss-1)
|
||||||
@ -78,7 +78,7 @@ subroutine get_fst280_bitmetrics(cd,nss,hmod,bitmetrics,badsync)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
bitmetrics=0.0
|
bitmetrics=0.0
|
||||||
do nseq=1,4 !Try coherent sequences of 1, 2, and 4 symbols
|
do nseq=1,nmax !Try coherent sequences of 1, 2, and 4 symbols
|
||||||
if(nseq.eq.1) nsym=1
|
if(nseq.eq.1) nsym=1
|
||||||
if(nseq.eq.2) nsym=2
|
if(nseq.eq.2) nsym=2
|
||||||
if(nseq.eq.3) nsym=4
|
if(nseq.eq.3) nsym=4
|
||||||
|
@ -100,10 +100,24 @@ contains
|
|||||||
allocate( cframe(0:164*nss-1) )
|
allocate( cframe(0:164*nss-1) )
|
||||||
|
|
||||||
npts=nmax
|
npts=nmax
|
||||||
fa=nfa
|
fa=max(100,nfa)
|
||||||
fb=nfb
|
fb=min(4800,nfb)
|
||||||
|
|
||||||
! The big fft is done once and is used for calculating the smoothed spectrum
|
if(ndeep.eq.3) then
|
||||||
|
ntmax=4 ! number of block sizes to try
|
||||||
|
jittermax=2
|
||||||
|
norder=3
|
||||||
|
elseif(ndeep.eq.2) then
|
||||||
|
ntmax=3
|
||||||
|
jittermax=2
|
||||||
|
norder=3
|
||||||
|
elseif(ndeep.eq.1) then
|
||||||
|
ntmax=1
|
||||||
|
jittermax=2
|
||||||
|
norder=2
|
||||||
|
endif
|
||||||
|
|
||||||
|
! The big fft is done once and is used for calculating the smoothed spectrum
|
||||||
! and also for downconverting/downsampling each candidate.
|
! and also for downconverting/downsampling each candidate.
|
||||||
r_data(1:nfft1)=iwave(1:nfft1)
|
r_data(1:nfft1)=iwave(1:nfft1)
|
||||||
r_data(nfft1+1:nfft1+2)=0.0
|
r_data(nfft1+1:nfft1+2)=0.0
|
||||||
@ -113,7 +127,7 @@ contains
|
|||||||
! Get first approximation of candidate frequencies
|
! Get first approximation of candidate frequencies
|
||||||
call get_candidates_fst280(c_bigfft,nfft1,nsps,hmod,fs,fa,fb, &
|
call get_candidates_fst280(c_bigfft,nfft1,nsps,hmod,fs,fa,fb, &
|
||||||
ncand,candidates)
|
ncand,candidates)
|
||||||
|
|
||||||
ndecodes=0
|
ndecodes=0
|
||||||
isbest1=0
|
isbest1=0
|
||||||
isbest8=0
|
isbest8=0
|
||||||
@ -173,16 +187,12 @@ contains
|
|||||||
if(smax8/smax1 .lt. 0.65 ) then
|
if(smax8/smax1 .lt. 0.65 ) then
|
||||||
fc2=fc21
|
fc2=fc21
|
||||||
isbest=isbest1
|
isbest=isbest1
|
||||||
ntmax=4
|
|
||||||
if(hmod.gt.1) ntmax=1
|
if(hmod.gt.1) ntmax=1
|
||||||
ntmin=1
|
|
||||||
njitter=2
|
njitter=2
|
||||||
else
|
else
|
||||||
fc2=fc28
|
fc2=fc28
|
||||||
isbest=isbest8
|
isbest=isbest8
|
||||||
ntmax=4
|
|
||||||
if(hmod.gt.1) ntmax=1
|
if(hmod.gt.1) ntmax=1
|
||||||
ntmin=1
|
|
||||||
njitter=2
|
njitter=2
|
||||||
endif
|
endif
|
||||||
fc_synced = fc0 + fc2
|
fc_synced = fc0 + fc2
|
||||||
@ -223,7 +233,7 @@ contains
|
|||||||
xdt=(isbest-nspsec)/fs2
|
xdt=(isbest-nspsec)/fs2
|
||||||
call fst280_downsample(c_bigfft,nfft1,ndown,fc_synced,c2)
|
call fst280_downsample(c_bigfft,nfft1,ndown,fc_synced,c2)
|
||||||
|
|
||||||
do ijitter=0,2
|
do ijitter=0,jittermax
|
||||||
if(ijitter.eq.0) ioffset=0
|
if(ijitter.eq.0) ioffset=0
|
||||||
if(ijitter.eq.1) ioffset=1
|
if(ijitter.eq.1) ioffset=1
|
||||||
if(ijitter.eq.2) ioffset=-1
|
if(ijitter.eq.2) ioffset=-1
|
||||||
@ -233,7 +243,8 @@ contains
|
|||||||
s2=sum(cframe*conjg(cframe))
|
s2=sum(cframe*conjg(cframe))
|
||||||
cframe=cframe/sqrt(s2)
|
cframe=cframe/sqrt(s2)
|
||||||
bitmetrics=0
|
bitmetrics=0
|
||||||
call get_fst280_bitmetrics(cframe,nss,hmod,bitmetrics,badsync)
|
call get_fst280_bitmetrics(cframe,nss,hmod,ntmax,bitmetrics,badsync)
|
||||||
|
if(badsync) cycle
|
||||||
|
|
||||||
hbits=0
|
hbits=0
|
||||||
where(bitmetrics(:,1).ge.0) hbits=1
|
where(bitmetrics(:,1).ge.0) hbits=1
|
||||||
@ -261,7 +272,7 @@ contains
|
|||||||
llrd=scalefac*llrd
|
llrd=scalefac*llrd
|
||||||
apmask=0
|
apmask=0
|
||||||
|
|
||||||
do itry=ntmax,ntmin,-1
|
do itry=1,ntmax
|
||||||
if(itry.eq.1) llr=llra
|
if(itry.eq.1) llr=llra
|
||||||
if(itry.eq.2) llr=llrb
|
if(itry.eq.2) llr=llrb
|
||||||
if(itry.eq.3) llr=llrc
|
if(itry.eq.3) llr=llrc
|
||||||
@ -272,13 +283,13 @@ contains
|
|||||||
if(iwspr.eq.0) then
|
if(iwspr.eq.0) then
|
||||||
maxosd=2
|
maxosd=2
|
||||||
call timer('d280_101',0)
|
call timer('d280_101',0)
|
||||||
call decode280_101(llr,Keff,maxosd,ndeep,apmask,message101, &
|
call decode280_101(llr,Keff,maxosd,norder,apmask,message101, &
|
||||||
cw,ntype,nharderrors,dmin)
|
cw,ntype,nharderrors,dmin)
|
||||||
call timer('d280_101',1)
|
call timer('d280_101',1)
|
||||||
else
|
else
|
||||||
maxosd=2
|
maxosd=2
|
||||||
call timer('d280_74 ',0)
|
call timer('d280_74 ',0)
|
||||||
call decode280_74(llr,Keff,maxosd,ndeep,apmask,message74,cw, &
|
call decode280_74(llr,Keff,maxosd,norder,apmask,message74,cw, &
|
||||||
ntype,nharderrors,dmin)
|
ntype,nharderrors,dmin)
|
||||||
call timer('d280_74 ',1)
|
call timer('d280_74 ',1)
|
||||||
endif
|
endif
|
||||||
@ -466,7 +477,7 @@ contains
|
|||||||
snr_cand=0.
|
snr_cand=0.
|
||||||
snr_cand(1:ncand)=candidates(1:ncand,2)
|
snr_cand(1:ncand)=candidates(1:ncand,2)
|
||||||
call indexx(snr_cand,ncand,indx)
|
call indexx(snr_cand,ncand,indx)
|
||||||
nmax=min(ncand,5)
|
nmax=min(ncand,20)
|
||||||
do i=1,nmax
|
do i=1,nmax
|
||||||
j=indx(ncand+1-i)
|
j=indx(ncand+1-i)
|
||||||
candidates0(i,1:4)=candidates(j,1:4)
|
candidates0(i,1:4)=candidates(j,1:4)
|
||||||
@ -474,7 +485,6 @@ contains
|
|||||||
ncand=nmax
|
ncand=nmax
|
||||||
candidates(1:ncand,1:4)=candidates0(1:ncand,1:4)
|
candidates(1:ncand,1:4)=candidates0(1:ncand,1:4)
|
||||||
candidates(ncand+1:,1:4)=0.
|
candidates(ncand+1:,1:4)=0.
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine get_candidates_fst280
|
end subroutine get_candidates_fst280
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user