Improve wideband Q65 decoding in MAP65.

This commit is contained in:
Joe Taylor 2022-12-01 12:17:03 -05:00
parent ef79bed994
commit 51eb142f4c
3 changed files with 28 additions and 13 deletions

View File

@ -40,7 +40,7 @@ subroutine map65_mmdec(nutc,id2,nqd,nsubmode,nfa,nfb,nfqso,ntol,newdat, &
lagain=(nagain.ne.0)
bVHF=.true.
emedelay=2.5
ndepth=1
ndepth=3 !Does this make it too slow?
ntrperiod=60
open(17,file=trim(temp_dir)//'/red.dat',status='unknown')

View File

@ -68,11 +68,11 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
endif
!###
! do k=1,ncand
! freq=cand(k)%f+nkhz_center-48.0-1.27046
! freq=cand(k)%f+nkhz_center-48.0
! ipk=cand(k)%indx
! write(*,3010) nutc,k,db(cand(k)%snr),freq,cand(k)%xdt, &
! write(71,3071) k,db(cand(k)%snr),freq,cand(k)%xdt, &
! cand(k)%ipol,cand(k)%iflip,ipk,ldecoded(ipk)
!3010 format('=a',i5.4,i5,f8.2,f10.3,f8.2,2i3,i6,L4)
!3071 format(i3,f8.2,f10.3,f8.2,2i3,i6,L4)
! enddo
!###

View File

@ -41,7 +41,7 @@ subroutine get_candidates(ss,savg,xpol,jz,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
type(candidate) :: cand(MAX_CANDIDATES)
common/early/nhsym1,nhsym2,ldecoded(32768)
call wb_sync(ss,savg,xpol,jz,nfa,nfb)
call wb_sync(ss,savg,xpol,jz,nfa,nfb) !Output to sync() array
tstep=2048.0/11025.0 !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
df3=96000.0/NFFT
@ -89,8 +89,6 @@ subroutine get_candidates(ss,savg,xpol,jz,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
if(diffhz.gt.-0.03*bw .and. diffhz.lt.1.03*bw) skip=.true.
enddo
if(skip) cycle
! write(*,3301) i,k,m,f0,diffhz,bw,db(snr1)
!3301 format('=A',3i5,f8.3,2f8.0,f8.2)
k=k+1
cand(k)%snr=snr1
cand(k)%f=f0
@ -99,6 +97,8 @@ subroutine get_candidates(ss,savg,xpol,jz,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
cand(k)%ipol=sync(n)%ipol
cand(k)%iflip=nint(flip)
cand(k)%indx=n
! write(50,3050) i,k,m,f0+32.0,diffhz,bw,snr1,db(snr1)
!3050 format(3i5,f8.3,2f8.0,2f8.2)
if(k.ge.MAX_CANDIDATES) exit
enddo
ncand=k
@ -251,15 +251,30 @@ subroutine wb_sync(ss,savg,xpol,jz,nfa,nfb)
enddo ! i (frequency bin)
! do i=ia,ib
! write(15,3015) 0.001*(i-1)*df3,sync(i)%ccfmax,sync(i)%xdt,sync(i)%ipol, &
! sync(i)%iflip,sync(i)%birdie
!3015 format(3f10.3,2i6,L5)
! enddo
call pctile(sync(ia:ib)%ccfmax,ib-ia+1,50,base)
sync(ia:ib)%ccfmax=sync(ia:ib)%ccfmax/base
bw=65*4*1.66666667 !Q65-60C bandwidth
nbw=bw/df3 + 1 !Number of bins to blank
syncmin=2.0
nguard=10
do i=ia,ib
if(sync(i)%ccfmax.lt.syncmin) cycle
spk=maxval(sync(i:i+nbw)%ccfmax)
ip =maxloc(sync(i:i+nbw)%ccfmax)
i0=ip(1)+i-1
ja=min(i,i0-nguard)
jb=i0+nbw+nguard
sync(ja:jb)%ccfmax=0.
sync(i0)%ccfmax=spk
enddo
! do i=ia,ib
! write(15,3015) 0.001*(i-1)*df3+32.0,sync(i)%ccfmax,sync(i)%xdt, &
! sync(i)%ipol,sync(i)%iflip,sync(i)%birdie
!3015 format(3f10.3,2i6,L5)
! enddo
return
end subroutine wb_sync