More tweaks to the Fast/Normal/Deep parameters.

This commit is contained in:
Joe Taylor 2021-02-23 16:13:46 -05:00
parent 0765a1cc06
commit 94c31572d2
7 changed files with 36 additions and 22 deletions

View File

@ -6,10 +6,18 @@ RxFreq: 1000/10
Commit No_AP MyCall BothCalls Commit No_AP MyCall BothCalls
----------------------------------------------- -----------------------------------------------
ef4787: 3 10 6 14 30 33 ef4787: 3 10 6 14 30 33
ef4787: 1 3 8 85
ef4787: 3 3 8* 286
ada5a6: 3 6 6 10 29 36 ada5a6: 3 6 6 10 29 36
10f574: 2 7 97.6 6 10 95.4 21 33 80.7 10f574: 2 7 97.6 6 10 95.4 21 33 80.7
b8ea4c: 2 7 100.5 6 10 96.9 21 33 81.0 b8ea4c: 2 7 100.5 6 10 96.9 21 33 81.0
a6779e: 3 1 6 95.2 6 11 90.1 21 33 67.3 a6779e: 3 1 6 95.2 6 11 90.1 21 33 67.3
767f53: 1 1 5 116 6 10 85 21 32 59
767f53: 2 2 7 301 6 10 241 21 33 168
767f53: 3 2 7 334 6 10 283 21 33 194
0765a1: 1 1 5 61 6 10 56 21 33 39
0765a1: 2 2 7 205 6 12 183 21 34 126
0765a1: 3 2 7 234 6 12 209 21 34 152
Mode: Q65-30A Mode: Q65-30A
Data: 30A_N0AN_6m_Ionoscatter (69 files, 6m ionoscatter) Data: 30A_N0AN_6m_Ionoscatter (69 files, 6m ionoscatter)

View File

@ -112,14 +112,17 @@ contains
baud=12000.0/nsps baud=12000.0/nsps
this%callback => callback this%callback => callback
nFadingModel=1 nFadingModel=1
maxiters=50
ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1) ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1)
ibwb=min(10,ibwa+3) ibwb=min(10,ibwa+3)
if(iand(ndepth,3).ge.2) then if(iand(ndepth,3).ge.2) then
ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1) ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1)
ibwb=min(10,ibwa+5) ibwb=min(10,ibwa+5)
maxiters=75
else if(iand(ndepth,3).eq.3) then else if(iand(ndepth,3).eq.3) then
ibwa=max(1,ibwa-1) ibwa=max(1,ibwa-1)
ibwb=min(10,ibwb+1) ibwb=min(10,ibwb+1)
maxiters=100
endif endif
! Generate codewords for full-AP list decoding ! Generate codewords for full-AP list decoding
@ -241,12 +244,12 @@ contains
if(c6.eq.' ') c6='<b> ' if(c6.eq.' ') c6='<b> '
c4=hisgrid(1:4) c4=hisgrid(1:4)
if(c4.eq.' ') c4='<b> ' if(c4.eq.' ') c4='<b> '
fmt='(i6.4,1x,a4,5i2,5i3,f6.2,f7.1,f7.2,f6.1,f6.2,'// & fmt='(i6.4,1x,a4,4i2,6i3,i4,f6.2,f7.1,f6.1,f6.2,'// &
'1x,a6,1x,a6,1x,a4,1x,a)' '1x,a6,1x,a6,1x,a4,1x,a)'
if(ntrperiod.le.30) fmt(5:5)='6' if(ntrperiod.le.30) fmt(5:5)='6'
if(idec.eq.3) nrc=0 if(idec.eq.3) nrc=0
write(22,fmt) nutc,cmode,nQSOprogress,idec,ndist,idf,idt,ibw, & write(22,fmt) nutc,cmode,nQSOprogress,idec,idf,idt,ibw,ndist, &
nused,icand,ncand,nrc,xdt,f0,db(snr1),snr2,tdecode, & nused,icand,ncand,nrc,ndepth,xdt,f0,snr2,tdecode, &
mycall(1:6),c6,c4,trim(decoded) mycall(1:6),c6,c4,trim(decoded)
close(22) close(22)
endif endif
@ -323,13 +326,12 @@ contains
if(c6.eq.' ') c6='<b> ' if(c6.eq.' ') c6='<b> '
c4=hisgrid(1:4) c4=hisgrid(1:4)
if(c4.eq.' ') c4='<b> ' if(c4.eq.' ') c4='<b> '
fmt='(i6.4,1x,a4,5i2,5i3,f6.2,f7.1,f7.2,f6.1,f6.2,'// & fmt='(i6.4,1x,a4,4i2,6i3,i4,f6.2,f7.1,f6.1,f6.2,'// &
'1x,a6,1x,a6,1x,a4,1x,a)' '1x,a6,1x,a6,1x,a4,1x,a)'
if(ntrperiod.le.30) fmt(5:5)='6' if(ntrperiod.le.30) fmt(5:5)='6'
if(idec.eq.3) nrc=0 if(idec.eq.3) nrc=0
write(22,fmt) nutc,cmode,nQSOprogress,idec,ndist,idf,idt,ibw, & write(22,fmt) nutc,cmode,nQSOprogress,idec,idf,idt,ibw,ndist, &
nused,icand,ncand,nrc,xdt,f0,db(snr1),snr2,tdecode, & nused,icand,ncand,nrc,ndepth,xdt,f0,snr2,tdecode, &
mycall(1:6),c6,c4,trim(decoded) mycall(1:6),c6,c4,trim(decoded)
close(22) close(22)
endif endif

View File

@ -522,7 +522,9 @@ int q65_esnodb_fastfading(
} }
int q65_decode(q65_codec_ds *pCodec, int* pDecodedCodeword, int *pDecodedMsg, const float *pIntrinsics, const int *pAPMask, const int *pAPSymbols) int q65_decode(q65_codec_ds *pCodec, int* pDecodedCodeword, int *pDecodedMsg,
const float *pIntrinsics, const int *pAPMask,
const int *pAPSymbols, const int maxiters)
{ {
const qracode *pQraCode; const qracode *pQraCode;
float *ix, *ex; float *ix, *ex;
@ -579,7 +581,7 @@ int q65_decode(q65_codec_ds *pCodec, int* pDecodedCodeword, int *pDecodedMsg, co
rc = qra_extrinsic( pQraCode, rc = qra_extrinsic( pQraCode,
ex, ex,
ix, ix,
100, maxiters,
pCodec->qra_v2cmsg, pCodec->qra_v2cmsg,
pCodec->qra_c2vmsg); pCodec->qra_c2vmsg);

View File

@ -11,7 +11,7 @@ module q65
38,46,50,55,60,62,66,69,74,76,85/) 38,46,50,55,60,62,66,69,74,76,85/)
integer codewords(63,206) integer codewords(63,206)
integer ibwa,ibwb,ncw,nsps,mode_q65,nfa,nfb integer ibwa,ibwb,ncw,nsps,mode_q65,nfa,nfb
integer idf,idt,ibw,ndist integer idf,idt,ibw,ndist,maxiters
integer istep,nsmo,lag1,lag2,npasses,nused,iseq,ncand,nrc integer istep,nsmo,lag1,lag2,npasses,nused,iseq,ncand,nrc
integer i0,j0 integer i0,j0
integer navg(0:1) integer navg(0:1)
@ -516,7 +516,7 @@ subroutine q65_dec2(s3,nsubmode,b90ts,esnodb,irc,dat4,decoded)
nFadingModel=1 nFadingModel=1
decoded=' ' decoded=' '
call q65_intrinsics_ff(s3,nsubmode,b90ts,nFadingModel,s3prob) call q65_intrinsics_ff(s3,nsubmode,b90ts,nFadingModel,s3prob)
call q65_dec(s3,s3prob,APmask,APsymbols,esnodb,dat4,irc) call q65_dec(s3,s3prob,APmask,APsymbols,maxiters,esnodb,dat4,irc)
if(sum(dat4).le.0) irc=-2 if(sum(dat4).le.0) irc=-2
nrc=irc nrc=irc
if(irc.ge.0) then if(irc.ge.0) then

View File

@ -75,11 +75,12 @@ int q65_intrinsics_fastfading(q65_codec_ds *pCodec,
int q65_decode(q65_codec_ds *pCodec, int q65_decode(q65_codec_ds *pCodec,
int* pDecodedCodeword, int* pDecodedCodeword,
int *pDecodedMsg, int *pDecodedMsg,
const float *pIntrinsics, const float *pIntrinsics,
const int *pAPMask, const int *pAPMask,
const int *pAPSymbols); const int *pAPSymbols,
const int maxiters);
int q65_decode_fullaplist(q65_codec_ds *codec, int q65_decode_fullaplist(q65_codec_ds *codec,
int *ydec, int *ydec,

View File

@ -26,13 +26,13 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0, &
idfmax=3 idfmax=3
idtmax=3 idtmax=3
ibw0=(ibwa+ibwb)/2 ibw0=(ibwa+ibwb)/2
maxdist=2 maxdist=5
if(iand(ndepth,3).ge.2) then if(iand(ndepth,3).ge.2) then
idfmax=5 idfmax=5
idtmax=5 idtmax=5
maxdist=3 maxdist=10
endif endif
if(iand(ndepth,3).eq.3) maxdist=4 if(iand(ndepth,3).eq.3) maxdist=15
LL=64*(mode_q65+2) LL=64*(mode_q65+2)
napmin=99 napmin=99
@ -58,7 +58,7 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0, &
where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim
call q65_bzap(s3,LL) !Zap birdies call q65_bzap(s3,LL) !Zap birdies
do ibw=ibwa,ibwb do ibw=ibwa,ibwb
ndist=sqrt(float(ndf**2 + ndt**2 + (ibw-ibw0)**2)) ndist=ndf**2 + ndt**2 + (ibw-ibw0)**2
if(ndist.gt.maxdist) cycle if(ndist.gt.maxdist) cycle
b90=1.72**ibw b90=1.72**ibw
if(b90.gt.345.0) cycle if(b90.gt.345.0) cycle

View File

@ -77,7 +77,7 @@ void q65_intrinsics_ff_(float s3[], int* submode, float* B90Ts,
} }
void q65_dec_(float s3[], float s3prob[], int APmask[], int APsymbols[], void q65_dec_(float s3[], float s3prob[], int APmask[], int APsymbols[],
float* esnodb0, int xdec[], int* rc0) int* maxiters0, float* esnodb0, int xdec[], int* rc0)
{ {
/* Input: s3[LL,NN] Symbol spectra /* Input: s3[LL,NN] Symbol spectra
@ -93,8 +93,9 @@ void q65_dec_(float s3[], float s3prob[], int APmask[], int APsymbols[],
int rc; int rc;
int ydec[63]; int ydec[63];
float esnodb; float esnodb;
int maxiters=*maxiters0;
rc = q65_decode(&codec,ydec,xdec,s3prob,APmask,APsymbols); rc = q65_decode(&codec,ydec,xdec,s3prob,APmask,APsymbols,maxiters);
*rc0=rc; *rc0=rc;
// rc = -1: Invalid params // rc = -1: Invalid params
// rc = -2: Decode failed // rc = -2: Decode failed