mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 04:11:16 -05:00
More changes to increase ft8 decoder yield.
This commit is contained in:
parent
b130479249
commit
d57b84be27
@ -8,10 +8,11 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
|
||||
! Subtract : dd(t) = dd(t) - 2*REAL{cref*cfilt}
|
||||
|
||||
parameter (NMAX=15*12000,NFRAME=1920*79)
|
||||
parameter (NFFT=NMAX,NFILT=2800)
|
||||
parameter (NFFT=NMAX,NFILT=4000)
|
||||
real dd(NMAX),dd0(NMAX)
|
||||
real window(-NFILT/2:NFILT/2)
|
||||
real x(NFFT+2)
|
||||
real endcorrection(NFILT/2+1)
|
||||
complex cx(0:NFFT/2)
|
||||
complex cref,camp,cfilt,cw,z
|
||||
integer itone(79)
|
||||
@ -19,7 +20,7 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
|
||||
data first/.true./
|
||||
common/heap8/cref(NFRAME),camp(NMAX),cfilt(NMAX),cw(NMAX)
|
||||
equivalence (x,cx)
|
||||
save first,/heap8/
|
||||
save first,/heap8/,endcorrection
|
||||
|
||||
if(first) then ! Create and normalize the filter
|
||||
pi=4.0*atan(1.0)
|
||||
@ -35,6 +36,9 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
|
||||
call four2a(cw,nfft,1,-1,1)
|
||||
cw=cw*fac
|
||||
first=.false.
|
||||
do j=1,NFILT/2+1
|
||||
endcorrection(j)=1.0/(1.0-sum(window(j-1:NFILT/2))/sumw)
|
||||
enddo
|
||||
endif
|
||||
|
||||
! Generate complex reference waveform cref
|
||||
@ -72,7 +76,8 @@ contains
|
||||
call four2a(cfilt,nfft,1,-1,1)
|
||||
cfilt(1:nfft)=cfilt(1:nfft)*cw(1:nfft)
|
||||
call four2a(cfilt,nfft,1,1,1)
|
||||
|
||||
cfilt(1:NFILT/2+1)=cfilt(1:NFILT/2+1)*endcorrection
|
||||
cfilt(nframe:nframe-NFILT/2:-1)=cfilt(nframe:nframe-NFILT/2:-1)*endcorrection
|
||||
x=0.
|
||||
do i=1,nframe
|
||||
j=nstart+i-1
|
||||
|
@ -37,7 +37,6 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate, &
|
||||
enddo
|
||||
savg=savg + s(1:NH1,j) !Average spectrum
|
||||
enddo
|
||||
! call baseline(savg,nfa,nfb,sbase)
|
||||
call get_spectrum_baseline(dd,nfa,nfb,sbase)
|
||||
|
||||
ia=max(1,nint(nfa/df))
|
||||
@ -129,14 +128,13 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate, &
|
||||
s=fac*s
|
||||
|
||||
! Sort by sync
|
||||
! call indexx(candidate0(3,1:ncand),ncand,indx)
|
||||
call indexx(candidate0(3,1:ncand),ncand,indx)
|
||||
! Sort by frequency
|
||||
call indexx(candidate0(1,1:ncand),ncand,indx)
|
||||
! call indexx(candidate0(1,1:ncand),ncand,indx)
|
||||
k=1
|
||||
! do i=ncand,1,-1
|
||||
do i=1,ncand
|
||||
do i=ncand,1,-1
|
||||
! do i=1,ncand
|
||||
j=indx(i)
|
||||
! if( candidate0(3,j) .ge. syncmin .and. candidate0(2,j).ge.-1.5 ) then
|
||||
if( candidate0(3,j) .ge. syncmin ) then
|
||||
candidate(2:3,k)=candidate0(2:3,j)
|
||||
candidate(1,k)=abs(candidate0(1,j))
|
||||
|
@ -115,8 +115,8 @@ contains
|
||||
if(ndepth.eq.1) npass=1
|
||||
if(ndepth.ge.2) npass=3
|
||||
do ipass=1,npass
|
||||
newdat=.true. ! Is this a problem? I hijacked newdat.
|
||||
syncmin=1.5
|
||||
newdat=.true.
|
||||
syncmin=1.3
|
||||
if(ipass.eq.1) then
|
||||
lsubtract=.true.
|
||||
if(ndepth.eq.1) lsubtract=.false.
|
||||
@ -126,7 +126,7 @@ contains
|
||||
lsubtract=.true.
|
||||
elseif(ipass.eq.3) then
|
||||
if((ndecodes-n2).eq.0) cycle
|
||||
lsubtract=.false.
|
||||
lsubtract=.true.
|
||||
endif
|
||||
call timer('sync8 ',0)
|
||||
maxc=MAXCAND
|
||||
|
Loading…
Reference in New Issue
Block a user