Minor tweaks to FT8 decoder, including norder=3 if ndepth=3.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7805 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-07-07 15:27:15 +00:00
parent d77ce86ddb
commit 5e0265a5ab
4 changed files with 13 additions and 9 deletions

View File

@ -1,4 +1,5 @@
subroutine ft8b(dd0,newdat,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr)
subroutine ft8b(dd0,newdat,nfqso,ndepth,icand,sync0,f1,xdt,nharderrors, &
dmin,nbadcrc,message,xsnr)
use timer_module, only: timer
include 'ft8_params.f90'
@ -19,13 +20,13 @@ subroutine ft8b(dd0,newdat,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr)
max_iterations=40
norder=2
if(ndepth.eq.3 .and. abs(nfqso-f1).lt.10.0) norder=3
fs2=12000.0/NDOWN
dt2=1.0/fs2
twopi=8.0*atan(1.0)
delfbest=0.
ibest=0
! if(abs(nfqso-f1).lt.10.0) norder=3
call timer('ft8_down',0)
call ft8_downsample(dd0,newdat,f1,cd0) !Mix f1 to baseband and downsample
call timer('ft8_down',1)
@ -141,6 +142,8 @@ subroutine ft8b(dd0,newdat,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr)
if( xnoi.gt.0 .and. xnoi.lt.xsig ) xsnr=xsig/xnoi-1.0
xsnr=10.0*log10(xsnr)-27.0
if( xsnr .lt. -24.0 ) xsnr=-24.0
! write(50,3050) icand,sync0,f1,xdt,nharderrors,dmin,message
!3050 format(i3,3f10.3,i5,f10.3,2x,a22)
endif
900 continue

View File

@ -8,8 +8,8 @@ subroutine sync8(dd,nfa,nfb,nfqso,s,candidate,ncand)
real x(NFFT1)
real sync2d(NH1,-JZ:JZ)
real red(NH1)
real candidate0(3,100)
real candidate(3,100)
real candidate0(3,200)
real candidate(3,200)
real dd(NMAX)
integer jpeak(NH1)
integer indx(NH1)
@ -88,12 +88,12 @@ subroutine sync8(dd,nfa,nfb,nfqso,s,candidate,ncand)
do i=1,100
n=ia + indx(iz+1-i) - 1
if(red(n).lt.syncmin) exit
k=k+1
if(k.lt.200) k=k+1
candidate0(1,k)=n*df
candidate0(2,k)=(jpeak(n)-1)*tstep
candidate0(3,k)=red(n)
enddo
ncand=min(100,k)
ncand=k
! Put nfqso at top of list, and save only the best of near-dupe freqs.
do i=1,ncand

View File

@ -32,7 +32,7 @@ contains
class(ft8_decoder), intent(inout) :: this
procedure(ft8_decode_callback) :: callback
real s(NH1,NHSYM)
real candidate(3,100)
real candidate(3,200)
real dd(15*12000)
logical, intent(in) :: newdat, nagain
character*12 mycall, hiscall
@ -52,7 +52,6 @@ contains
call timer('sync8 ',1)
syncmin=2.0
! rewind 51
do icand=1,ncand
sync=candidate(3,icand)
if(sync.lt.syncmin) cycle
@ -60,7 +59,8 @@ contains
xdt=candidate(2,icand)
nsnr0=min(99,nint(10.0*log10(sync) - 25.5)) !### empirical ###
call timer('ft8b ',0)
call ft8b(dd,newdat,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr)
call ft8b(dd,newdat,nfqso,ndepth,icand,sync,f1,xdt,nharderrors, &
dmin,nbadcrc,message,xsnr)
nsnr=xsnr
xdt=xdt-0.6
call timer('ft8b ',1)

View File

@ -1788,6 +1788,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
case Qt::Key_Minus:
if(e->modifiers() & Qt::ControlModifier) {
int f=ui->TxFreqSpinBox->value()/50;
if((ui->TxFreqSpinBox->value() % 50) == 0) f=f-1;
ui->TxFreqSpinBox->setValue(50*f);
return;
}