More changes to increase ft8 decoder yield.

This commit is contained in:
Steven Franke 2020-03-08 12:03:52 -05:00
parent b130479249
commit d57b84be27
3 changed files with 15 additions and 12 deletions

View File

@ -8,10 +8,11 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
! Subtract : dd(t) = dd(t) - 2*REAL{cref*cfilt} ! Subtract : dd(t) = dd(t) - 2*REAL{cref*cfilt}
parameter (NMAX=15*12000,NFRAME=1920*79) parameter (NMAX=15*12000,NFRAME=1920*79)
parameter (NFFT=NMAX,NFILT=2800) parameter (NFFT=NMAX,NFILT=4000)
real dd(NMAX),dd0(NMAX) real dd(NMAX),dd0(NMAX)
real window(-NFILT/2:NFILT/2) real window(-NFILT/2:NFILT/2)
real x(NFFT+2) real x(NFFT+2)
real endcorrection(NFILT/2+1)
complex cx(0:NFFT/2) complex cx(0:NFFT/2)
complex cref,camp,cfilt,cw,z complex cref,camp,cfilt,cw,z
integer itone(79) integer itone(79)
@ -19,7 +20,7 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
data first/.true./ data first/.true./
common/heap8/cref(NFRAME),camp(NMAX),cfilt(NMAX),cw(NMAX) common/heap8/cref(NFRAME),camp(NMAX),cfilt(NMAX),cw(NMAX)
equivalence (x,cx) equivalence (x,cx)
save first,/heap8/ save first,/heap8/,endcorrection
if(first) then ! Create and normalize the filter if(first) then ! Create and normalize the filter
pi=4.0*atan(1.0) pi=4.0*atan(1.0)
@ -35,6 +36,9 @@ subroutine subtractft8(dd0,itone,f0,dt,lrefinedt)
call four2a(cw,nfft,1,-1,1) call four2a(cw,nfft,1,-1,1)
cw=cw*fac cw=cw*fac
first=.false. first=.false.
do j=1,NFILT/2+1
endcorrection(j)=1.0/(1.0-sum(window(j-1:NFILT/2))/sumw)
enddo
endif endif
! Generate complex reference waveform cref ! Generate complex reference waveform cref
@ -72,7 +76,8 @@ contains
call four2a(cfilt,nfft,1,-1,1) call four2a(cfilt,nfft,1,-1,1)
cfilt(1:nfft)=cfilt(1:nfft)*cw(1:nfft) cfilt(1:nfft)=cfilt(1:nfft)*cw(1:nfft)
call four2a(cfilt,nfft,1,1,1) 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. x=0.
do i=1,nframe do i=1,nframe
j=nstart+i-1 j=nstart+i-1

View File

@ -37,7 +37,6 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate, &
enddo enddo
savg=savg + s(1:NH1,j) !Average spectrum savg=savg + s(1:NH1,j) !Average spectrum
enddo enddo
! call baseline(savg,nfa,nfb,sbase)
call get_spectrum_baseline(dd,nfa,nfb,sbase) call get_spectrum_baseline(dd,nfa,nfb,sbase)
ia=max(1,nint(nfa/df)) ia=max(1,nint(nfa/df))
@ -129,14 +128,13 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,maxcand,s,candidate, &
s=fac*s s=fac*s
! Sort by sync ! Sort by sync
! call indexx(candidate0(3,1:ncand),ncand,indx) call indexx(candidate0(3,1:ncand),ncand,indx)
! Sort by frequency ! Sort by frequency
call indexx(candidate0(1,1:ncand),ncand,indx) ! call indexx(candidate0(1,1:ncand),ncand,indx)
k=1 k=1
! do i=ncand,1,-1 do i=ncand,1,-1
do i=1,ncand ! do i=1,ncand
j=indx(i) j=indx(i)
! if( candidate0(3,j) .ge. syncmin .and. candidate0(2,j).ge.-1.5 ) then
if( candidate0(3,j) .ge. syncmin ) then if( candidate0(3,j) .ge. syncmin ) then
candidate(2:3,k)=candidate0(2:3,j) candidate(2:3,k)=candidate0(2:3,j)
candidate(1,k)=abs(candidate0(1,j)) candidate(1,k)=abs(candidate0(1,j))

View File

@ -115,8 +115,8 @@ contains
if(ndepth.eq.1) npass=1 if(ndepth.eq.1) npass=1
if(ndepth.ge.2) npass=3 if(ndepth.ge.2) npass=3
do ipass=1,npass do ipass=1,npass
newdat=.true. ! Is this a problem? I hijacked newdat. newdat=.true.
syncmin=1.5 syncmin=1.3
if(ipass.eq.1) then if(ipass.eq.1) then
lsubtract=.true. lsubtract=.true.
if(ndepth.eq.1) lsubtract=.false. if(ndepth.eq.1) lsubtract=.false.
@ -126,7 +126,7 @@ contains
lsubtract=.true. lsubtract=.true.
elseif(ipass.eq.3) then elseif(ipass.eq.3) then
if((ndecodes-n2).eq.0) cycle if((ndecodes-n2).eq.0) cycle
lsubtract=.false. lsubtract=.true.
endif endif
call timer('sync8 ',0) call timer('sync8 ',0)
maxc=MAXCAND maxc=MAXCAND