mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-06-25 06:35:17 -04:00
Improve wideband Q65 decoding in MAP65.
This commit is contained in:
parent
ef79bed994
commit
51eb142f4c
@ -40,7 +40,7 @@ subroutine map65_mmdec(nutc,id2,nqd,nsubmode,nfa,nfb,nfqso,ntol,newdat, &
|
|||||||
lagain=(nagain.ne.0)
|
lagain=(nagain.ne.0)
|
||||||
bVHF=.true.
|
bVHF=.true.
|
||||||
emedelay=2.5
|
emedelay=2.5
|
||||||
ndepth=1
|
ndepth=3 !Does this make it too slow?
|
||||||
ntrperiod=60
|
ntrperiod=60
|
||||||
|
|
||||||
open(17,file=trim(temp_dir)//'/red.dat',status='unknown')
|
open(17,file=trim(temp_dir)//'/red.dat',status='unknown')
|
||||||
|
@ -68,11 +68,11 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
|||||||
endif
|
endif
|
||||||
!###
|
!###
|
||||||
! do k=1,ncand
|
! 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
|
! 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)
|
! 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
|
! enddo
|
||||||
!###
|
!###
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ subroutine get_candidates(ss,savg,xpol,jz,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
|
|||||||
type(candidate) :: cand(MAX_CANDIDATES)
|
type(candidate) :: cand(MAX_CANDIDATES)
|
||||||
common/early/nhsym1,nhsym2,ldecoded(32768)
|
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
|
tstep=2048.0/11025.0 !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
|
||||||
df3=96000.0/NFFT
|
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.
|
if(diffhz.gt.-0.03*bw .and. diffhz.lt.1.03*bw) skip=.true.
|
||||||
enddo
|
enddo
|
||||||
if(skip) cycle
|
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
|
k=k+1
|
||||||
cand(k)%snr=snr1
|
cand(k)%snr=snr1
|
||||||
cand(k)%f=f0
|
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)%ipol=sync(n)%ipol
|
||||||
cand(k)%iflip=nint(flip)
|
cand(k)%iflip=nint(flip)
|
||||||
cand(k)%indx=n
|
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
|
if(k.ge.MAX_CANDIDATES) exit
|
||||||
enddo
|
enddo
|
||||||
ncand=k
|
ncand=k
|
||||||
@ -251,15 +251,30 @@ subroutine wb_sync(ss,savg,xpol,jz,nfa,nfb)
|
|||||||
|
|
||||||
enddo ! i (frequency bin)
|
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)
|
call pctile(sync(ia:ib)%ccfmax,ib-ia+1,50,base)
|
||||||
sync(ia:ib)%ccfmax=sync(ia:ib)%ccfmax/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
|
return
|
||||||
end subroutine wb_sync
|
end subroutine wb_sync
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user