diff --git a/lib/qra/q65/q65.f90 b/lib/qra/q65/q65.f90 index 2012af83f..9f89fa2e7 100644 --- a/lib/qra/q65/q65.f90 +++ b/lib/qra/q65/q65.f90 @@ -437,11 +437,16 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ntol,ndepth,ntrperiod,iavg,ipk,jpk, & ia=max(nfa,100)/df ib=min(nfb,4900)/df - max_drift=0 - if(nqd.eq.1 .and. iavg.eq.0 .and. ntol.le.100 .and. ntrperiod.eq.60) then + max_drift=0 !Drift units: bins/TxT +! Do we need a GUI control to set max_drift ? +! For now, turn on drift compensation only for submodes 15B amd 60A. + if(nqd.eq.1 .and. iavg.eq.0 .and. ntol.le.100 .and. ntrperiod.eq.60 .and. & + mode_q65.eq.1) max_drift=10 !Q65-60A + if(nqd.eq.1 .and. iavg.eq.0 .and. ntol.le.100 .and. ntrperiod.eq.15 .and. & + mode_q65.eq.4) max_drift=40 !Q65-15C + if(max_drift.ne.0) then ia=nint((nfqso-ntol)/df) ib=nint((nfqso+ntol)/df) - max_drift=10 !Drift units: bins/TRperiod (?) endif do i=ia,ib diff --git a/lib/qra/q65/q65_loops.f90 b/lib/qra/q65/q65_loops.f90 index 424a5de91..a1bcc64cb 100644 --- a/lib/qra/q65/q65_loops.f90 +++ b/lib/qra/q65/q65_loops.f90 @@ -52,6 +52,7 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0, & if(mod(idf,2).eq.0) ndf=-ndf a=0. a(1)=-(f0+0.5*baud*ndf) +! Variable 'drift' is frequency increase over full TxT. Therefore we want: a(2)=-0.5*drift call twkfreq(c00,c0,npts2,6000.0,a) do idt=1,idtmax diff --git a/lib/test_q65.f90 b/lib/test_q65.f90 index 4135a290d..e2987d719 100644 --- a/lib/test_q65.f90 +++ b/lib/test_q65.f90 @@ -1,6 +1,6 @@ program test_q65 - character*82 cmd1,cmd2,line + character*84 cmd1,cmd2,line character*22 msg character*8 arg character*1 csubmode @@ -71,8 +71,8 @@ program test_q65 tsym=1.0/baud ! 1 2 3 4 5 6 7 -! 123456789012345678901234567890123456789012345678901234567890123456789012345' - cmd1='q65sim "K1ABC W9XYZ EN37 " A 1500 5.0 0.0 0.0 1 60 100 -10.0 > junk0' +! 1234567890123456789012345678901234567890123456789012345678901234567890123456' + cmd1='q65sim "K1ABC W9XYZ EN37 " A 1500 5.0 0.0 0.0 1 60 100 -10.0 > junk0' cmd2='jt9 -3 -p 15 -L 300 -H 3000 -d 3 -b A -Q 3 -f 1500 *.wav > junk' write(cmd1(10:33),'(a)') '"'//msg//'"' @@ -80,10 +80,10 @@ program test_q65 write(cmd1(37:40),'(i4)') nf0 write(cmd1(41:45),'(f5.0)') fDop write(cmd1(46:50),'(f5.2)') dt - write(cmd1(51:54),'(f4.0)') f1 - write(cmd1(55:57),'(i3)') nstp - write(cmd1(58:61),'(i4)') ntrperiod - write(cmd1(62:66),'(i5)') nfiles + write(cmd1(51:56),'(i6)') nint(f1) + write(cmd1(57:59),'(i3)') nstp + write(cmd1(60:63),'(i4)') ntrperiod + write(cmd1(64:68),'(i5)') nfiles write(cmd2(11:13),'(i3)') ntrperiod write(cmd2(33:35),'(i3)') ndepth @@ -94,7 +94,7 @@ program test_q65 call system('rm -f *.wav') write(*,1008) ntrperiod,csubmode,ndepth,fDop,f1,nstp -1008 format('Mode:',i4,a1,' Depth:',i3,' fDop:',f6.1,' Drift:',f6.1, & +1008 format('Mode:',i4,a1,' Depth:',i3,' fDop:',f6.1,' Drift:',f8.1, & ' Steps:',i3) write(*,1010) (j,j=0,5) write(12,1010) (j,j=0,5) @@ -112,7 +112,7 @@ program test_q65 nfalse=0 naptype=0 ndecn=0 - write(cmd1(70:74),'(f5.1)') snr1 + write(cmd1(72:76),'(f5.1)') snr1 call system(cmd1) call sec0(0,tdec) call system(cmd2) diff --git a/lib/twkfreq.f90 b/lib/twkfreq.f90 index 7c240d529..5188d5006 100644 --- a/lib/twkfreq.f90 +++ b/lib/twkfreq.f90 @@ -1,5 +1,9 @@ subroutine twkfreq(c3,c4,npts,fsample,a) + ! Adjust frequency of complex data + ! a(1) Hz + ! a(2) Hz/(0.5*TxT), where TxT = npts/fsample = file duration + complex c3(npts) complex c4(npts) complex w,wstep