mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-15 16:42:12 -05:00
Experimental change to candidate detection.
This commit is contained in:
parent
d5c5a58c7f
commit
f774cecd00
@ -58,6 +58,8 @@ subroutine get_fst240_bitmetrics(cd,nss,hmod,nmax,bitmetrics,s4,badsync)
|
|||||||
is1=0
|
is1=0
|
||||||
is2=0
|
is2=0
|
||||||
is3=0
|
is3=0
|
||||||
|
is4=0
|
||||||
|
is5=0
|
||||||
badsync=.false.
|
badsync=.false.
|
||||||
ibmax=0
|
ibmax=0
|
||||||
|
|
||||||
@ -74,9 +76,8 @@ subroutine get_fst240_bitmetrics(cd,nss,hmod,nmax,bitmetrics,s4,badsync)
|
|||||||
if(icos8(k-1).eq.(ip(1)-1)) is5=is5+1
|
if(icos8(k-1).eq.(ip(1)-1)) is5=is5+1
|
||||||
enddo
|
enddo
|
||||||
nsync=is1+is2+is3+is4+is5 !Number of correct hard sync symbols, 0-40
|
nsync=is1+is2+is3+is4+is5 !Number of correct hard sync symbols, 0-40
|
||||||
|
|
||||||
badsync=.false.
|
badsync=.false.
|
||||||
if(nsync .lt. 8) then
|
if(nsync .lt. 16) then
|
||||||
badsync=.true.
|
badsync=.true.
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
@ -218,6 +218,7 @@ contains
|
|||||||
candidates(icand,3)=fc_synced
|
candidates(icand,3)=fc_synced
|
||||||
candidates(icand,4)=isbest
|
candidates(icand,4)=isbest
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! remove duplicate candidates
|
! remove duplicate candidates
|
||||||
do icand=1,ncand
|
do icand=1,ncand
|
||||||
fc=candidates(icand,3)
|
fc=candidates(icand,3)
|
||||||
@ -226,7 +227,7 @@ contains
|
|||||||
fc2=candidates(ic2,3)
|
fc2=candidates(ic2,3)
|
||||||
isbest2=nint(candidates(ic2,4))
|
isbest2=nint(candidates(ic2,4))
|
||||||
if(ic2.ne.icand .and. fc2.gt.0.0) then
|
if(ic2.ne.icand .and. fc2.gt.0.0) then
|
||||||
if(abs(fc2-fc).lt.0.05*baud) then ! same frequency
|
if(abs(fc2-fc).lt.0.10*baud) then ! same frequency
|
||||||
if(abs(isbest2-isbest).le.2) then
|
if(abs(isbest2-isbest).le.2) then
|
||||||
candidates(ic2,3)=-1
|
candidates(ic2,3)=-1
|
||||||
endif
|
endif
|
||||||
@ -243,6 +244,7 @@ contains
|
|||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
ncand=ic
|
ncand=ic
|
||||||
|
|
||||||
do icand=1,ncand
|
do icand=1,ncand
|
||||||
sync=candidates(icand,2)
|
sync=candidates(icand,2)
|
||||||
fc_synced=candidates(icand,3)
|
fc_synced=candidates(icand,3)
|
||||||
@ -269,7 +271,7 @@ contains
|
|||||||
ns4=count(hbits(229:244).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/))
|
ns4=count(hbits(229:244).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/))
|
||||||
ns5=count(hbits(305:320).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/))
|
ns5=count(hbits(305:320).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/))
|
||||||
nsync_qual=ns1+ns2+ns3+ns4+ns5
|
nsync_qual=ns1+ns2+ns3+ns4+ns5
|
||||||
if(nsync_qual.lt. 26) cycle !### Value ?? ###
|
if(nsync_qual.lt. 44) cycle !### Value ?? ###
|
||||||
|
|
||||||
scalefac=2.83
|
scalefac=2.83
|
||||||
llra( 1: 60)=bitmetrics( 17: 76, 1)
|
llra( 1: 60)=bitmetrics( 17: 76, 1)
|
||||||
@ -349,7 +351,7 @@ contains
|
|||||||
iaptype=0
|
iaptype=0
|
||||||
qual=0.
|
qual=0.
|
||||||
fsig=fc_synced - 1.5*hmod*baud
|
fsig=fc_synced - 1.5*hmod*baud
|
||||||
write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') &
|
write(21,'(i6,7i6,f7.1,f9.2,3f7.1,1x,a37)') &
|
||||||
nutc,icand,itry,iaptype,ijitter,ntype,nsync_qual,nharderrors,dmin,sync,xsnr,xdt,fsig,msg
|
nutc,icand,itry,iaptype,ijitter,ntype,nsync_qual,nharderrors,dmin,sync,xsnr,xdt,fsig,msg
|
||||||
call this%callback(nutc,smax1,nsnr,xdt,fsig,msg, &
|
call this%callback(nutc,smax1,nsnr,xdt,fsig,msg, &
|
||||||
iaptype,qual,ntrperiod)
|
iaptype,qual,ntrperiod)
|
||||||
@ -479,12 +481,14 @@ write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') &
|
|||||||
|
|
||||||
complex c_bigfft(0:nfft1/2)
|
complex c_bigfft(0:nfft1/2)
|
||||||
integer hmod
|
integer hmod
|
||||||
integer indx(100)
|
integer indx(100),im(1)
|
||||||
real candidates(100,4)
|
real candidates(100,4)
|
||||||
real candidates0(100,4)
|
real candidates0(100,4)
|
||||||
real snr_cand(100)
|
real snr_cand(100)
|
||||||
real s(18000)
|
real s(18000)
|
||||||
real s2(18000)
|
real s2(18000)
|
||||||
|
real xdb(-3:3)
|
||||||
|
data xdb/0.25,0.50,0.75,1.0,0.75,0.50,0.25/
|
||||||
data nfft1z/-1/
|
data nfft1z/-1/
|
||||||
save nfft1z
|
save nfft1z
|
||||||
|
|
||||||
@ -530,27 +534,25 @@ write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') &
|
|||||||
candidates=0
|
candidates=0
|
||||||
if(ia.lt.3) ia=3
|
if(ia.lt.3) ia=3
|
||||||
if(ib.gt.18000-2) ib=18000-2
|
if(ib.gt.18000-2) ib=18000-2
|
||||||
do i=ia,ib
|
|
||||||
if((s2(i).gt.s2(i-2)).and. &
|
pval=99.99
|
||||||
(s2(i).gt.s2(i+2)).and. &
|
do while(ncand.lt.100 .and. pval.gt.thresh)
|
||||||
(s2(i).gt.thresh).and.ncand.lt.100) then
|
im=maxloc(s2(ia:ib))
|
||||||
|
iploc=ia+im(1)-1
|
||||||
|
pval=s2(iploc)
|
||||||
|
if(s2(iploc).gt.thresh) then
|
||||||
|
do i=-3,+3
|
||||||
|
k=iploc+2*hmod*i
|
||||||
|
if(k.ge.ia .and. k.le.ib) then
|
||||||
|
s2(k)=max(0.,s2(k)-0.9*pval*xdb(i))
|
||||||
|
endif
|
||||||
|
enddo
|
||||||
ncand=ncand+1
|
ncand=ncand+1
|
||||||
candidates(ncand,1)=df2*i
|
candidates(ncand,1)=df2*iploc
|
||||||
candidates(ncand,2)=s2(i)
|
candidates(ncand,2)=pval
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
snr_cand=0.
|
|
||||||
snr_cand(1:ncand)=candidates(1:ncand,2)
|
|
||||||
call indexx(snr_cand,ncand,indx)
|
|
||||||
nmax=min(ncand,20)
|
|
||||||
do i=1,nmax
|
|
||||||
j=indx(ncand+1-i)
|
|
||||||
candidates0(i,1:4)=candidates(j,1:4)
|
|
||||||
enddo
|
|
||||||
ncand=nmax
|
|
||||||
candidates(1:ncand,1:4)=candidates0(1:ncand,1:4)
|
|
||||||
candidates(ncand+1:,1:4)=0.
|
|
||||||
return
|
return
|
||||||
end subroutine get_candidates_fst240
|
end subroutine get_candidates_fst240
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user