From 0a439019b334784d6f17ad3e4c14eb0f7e693183 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Mon, 23 Jan 2023 14:03:49 -0500 Subject: [PATCH] WIP on optimization of Q65-60C decodes with 110 EME Contest files. --- lib/q65_decode.f90 | 27 +++++++++++---------------- lib/qra/q65/q65.f90 | 14 ++------------ 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index aa7acb5b9..eb9d69c84 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -73,7 +73,7 @@ contains real f0decodes(100) integer dat4(13) !Decoded message as 12 6-bit integers integer dgen(13) - integer nq65param(0:7) + integer nq65param(3) logical lclearave,lnewdat0,lapcqonly,unpk77_success logical single_decode,lagain,ex complex, allocatable :: c00(:) !Analytic signal, 6000 Sa/s @@ -135,27 +135,22 @@ contains baud=12000.0/nsps this%callback => callback nFadingModel=1 - maxiters=20 - ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1) - ibwb=min(10,ibwa+2) - if(iand(ndepth,3).ge.2) then - ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1) - ibwb=min(10,ibwa+5) - maxiters=40 - endif + ibwa=2*mode_q65 + ibwb=ibwa+4 + maxiters=40 + if(iand(ndepth,3).eq.2) maxiters=60 if(iand(ndepth,3).eq.3) then - ibwa=max(1,ibwa-1) - ibwb=min(10,ibwb+1) - maxiters=60 + ibwa=max(1,ibwa-2) + ibwb=ibwb+2 + maxiters=100 endif inquire(file='q65_params.txt',exist=ex) if(ex) then open(28,file='q65_params.txt',status='old') read(28,*) nq65param - ibwa=max(1,nq65param(nsubmode)) - ibwa=min(40,ibwa) - ibwb=ibwa - maxiters=nq65param(4+iand(ndepth,3)) + ibwa=nq65param(1) + ibwb=nq65param(2) + maxiters=nq65param(3) close(28) endif ! write(*,3001) iand(ndepth,3),nsubmode,ibwa,ibwb,maxiters diff --git a/lib/qra/q65/q65.f90 b/lib/qra/q65/q65.f90 index 956b1f53d..6bcd6ae97 100644 --- a/lib/qra/q65/q65.f90 +++ b/lib/qra/q65/q65.f90 @@ -396,18 +396,8 @@ subroutine q65_dec_q012(s3,LL,snr2,dat4,idec,decoded) read(c78,1060) apsymbols endif -! do ibw=ibwa,ibwb -!### - ibw_mid=(ibwa+ibwb)/2 - iimax=3 - if(maxiters.eq.40) iimax=5 - if(maxiters.eq.60) iimax=7 -! print*,'a',maxiters,ibwa,ibwb,ibw_mid,iimax - do ii=1,iimax - n=ii/2 - if(iand(ii,1).eq.0) n=-n - ibw=ibw_mid + n -!### +! print*,'a',ibwa,ibwb,maxiters,iimax + do ibw=ibwa,ibwb b90=1.72**ibw b90ts=b90/baud call q65_dec2(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded)