Tweaks to decrease UER for Sh messages.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7221 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Steven Franke 2016-10-23 17:37:44 +00:00
parent 0bc06e27e6
commit ad0ad1680b
4 changed files with 17 additions and 12 deletions

View File

@ -27,16 +27,17 @@ read(arg,*) ntrials
call getarg(4,arg) call getarg(4,arg)
read(arg,*) s read(arg,*) s
rate=real(K)/real(N) n=32
!rate=real(K)/real(N)
! don't count hash bits as data bits ! don't count hash bits as data bits
!rate=5.0/real(N) rate=4.0/real(N)
write(*,*) "rate: ",rate write(*,*) "rate: ",rate
write(*,*) "niter= ",max_iterations," ndither= ",max_dither," s= ",s write(*,*) "niter= ",max_iterations," ndither= ",max_dither," s= ",s
allocate ( codeword(N), decoded(K), message(K) ) allocate ( codeword(N), decoded(K), message(K) )
allocate ( lratio(N), rxdata(N), llr(N) ) allocate ( lratio(N), rxdata(N), llr(N) )
msg="K1JT K9AN RRR " msg="K1JT K9AN"
irpt=14 irpt=14
call hash(msg,22,ihash) call hash(msg,22,ihash)
ihash=iand(ihash,4095) !12-bit hash ihash=iand(ihash,4095) !12-bit hash
@ -52,8 +53,8 @@ write(*,'(32i1)') codeword
call init_random_seed() call init_random_seed()
write(*,*) "Eb/N0 SNR2500 ngood nundetected nbadhash" write(*,*) "Eb/N0 SNR2500 ngood nundetected nbadhash"
do idb = -6, 14 do idb = 0, 30
db=idb/2.0-1.0 db=idb/2.0
sigma=1/sqrt( 2*rate*(10**(db/10.0)) ) sigma=1/sqrt( 2*rate*(10**(db/10.0)) )
ngood=0 ngood=0
nue=0 nue=0

View File

@ -94,10 +94,13 @@ program msk144d2
do i=1,npts-7*1024+1,7*512 do i=1,npts-7*1024+1,7*512
ichunk=id2(i:i+7*1024-1) ichunk=id2(i:i+7*1024-1)
tsec=(i-1)/12000.0 tsec=(i-1)/12000.0
tt=sum(float(abs(id2(i:i+7*512-1))))
if( tt .ne. 0.0 ) then
call mskrtd(ichunk,nutc,tsec,ntol,nrxfreq,ndepth,mycall,hiscall,bShMsgs,line) call mskrtd(ichunk,nutc,tsec,ntol,nrxfreq,ndepth,mycall,hiscall,bShMsgs,line)
if( index(line,"^") .ne. 0 .or. index(line,"&") .ne. 0 ) then if( index(line,"^") .ne. 0 .or. index(line,"&") .ne. 0 ) then
write(*,*) line write(*,*) line
endif endif
endif
enddo enddo
enddo enddo

View File

@ -100,7 +100,8 @@ subroutine msk40decodeframe(c,mycall,hiscall,xsnr,msgreceived,nsuccess)
softbits=softbits/ssig softbits=softbits/ssig
sigma=0.75 sigma=0.75
if(xsnr.lt.0.0) sigma=0.75-0.0875*xsnr ! if(xsnr.lt.0.0) sigma=0.75-0.0875*xsnr
if(xsnr.lt.0.0) sigma=0.75-0.11*xsnr
llr(1:32)=softbits(9:40) llr(1:32)=softbits(9:40)
llr=2.0*llr/(sigma*sigma) llr=2.0*llr/(sigma*sigma)
@ -124,8 +125,8 @@ subroutine msk40decodeframe(c,mycall,hiscall,xsnr,msgreceived,nsuccess)
enddo enddo
nrxrpt=iand(imsg,15) nrxrpt=iand(imsg,15)
nrxhash=(imsg-nrxrpt)/16 nrxhash=(imsg-nrxrpt)/16
if(nhammd.le.4 .and. cord .lt. 0.65 .and. nrxhash.eq.ihash) then
!write(*,*) 'decodeframe ',nhammd,cord,nrxhash,nrxrpt,ihash,xsnr,sigma !write(*,*) 'decodeframe ',nhammd,cord,nrxhash,nrxrpt,ihash,xsnr,sigma
if(nhammd.le.5 .and. cord .lt. 1.7 .and. nrxhash.eq.ihash) then
nsuccess=1 nsuccess=1
write(msgreceived,'(a1,a,1x,a,a1,1x,a4)') "<",trim(mycall), & write(msgreceived,'(a1,a,1x,a,a1,1x,a4)') "<",trim(mycall), &
trim(hiscall),">",rpt(nrxrpt) trim(hiscall),">",rpt(nrxrpt)

View File

@ -125,7 +125,7 @@ subroutine msk40spd(cbig,n,ntol,mycall,hiscall,nsuccess,msgreceived,fc,fret,tret
do ip=1,MAXCAND ! Find candidates do ip=1,MAXCAND ! Find candidates
iloc=maxloc(detmet(1:nstep)) iloc=maxloc(detmet(1:nstep))
il=iloc(1) il=iloc(1)
if( (detmet(il) .lt. 3.0) ) exit if( (detmet(il) .lt. 3.5) ) exit
if( abs(detfer(il)) .le. ntol ) then if( abs(detfer(il)) .le. ntol ) then
ndet=ndet+1 ndet=ndet+1
nstart(ndet)=1+(il-1)*60+1 nstart(ndet)=1+(il-1)*60+1
@ -179,10 +179,10 @@ subroutine msk40spd(cbig,n,ntol,mycall,hiscall,nsuccess,msgreceived,fc,fret,tret
call msk40decodeframe(ct,mycall,hiscall,xsnr,msgreceived,ndecodesuccess) call msk40decodeframe(ct,mycall,hiscall,xsnr,msgreceived,ndecodesuccess)
if( ndecodesuccess .gt. 0 ) then if( ndecodesuccess .gt. 0 ) then
!write(*,*) icand, iav, ipk, is, tret, fret, msgreceived
tret=(nstart(icand)+NSPM/2)/fs tret=(nstart(icand)+NSPM/2)/fs
fret=fest fret=fest
navg=sum(navmask) navg=sum(navmask)
!write(*,*) icand, iav, ipk, is, tret, fret, msgreceived
nsuccess=1 nsuccess=1
return return
endif endif