First working code that uses wider detection bandwidths for submodes JT65B,C.

Still needs work!


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6507 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-03-07 20:00:23 +00:00
parent e7f3a10fa2
commit eb076718f2
5 changed files with 53 additions and 26 deletions

View File

@ -1,6 +1,6 @@
subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
naggressive,ndepth,mycall,hiscall,hisgrid,nexp_decode,sync2, &
a,dt,nft,qual,nhist,decoded)
a,dt,nft,qual,nhist,nsmo,decoded)
! Apply AFC corrections to a candidate JT65 signal, then decode it.
@ -12,6 +12,7 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
complex cx1(NMAX/8) !Data at 1378.125 sps, offset by 355.3 Hz
complex c5x(NMAX/32) !Data at 344.53125 Hz
complex c5a(512)
real s1(-255:256,126)
real s2(66,126)
real a(5)
logical first
@ -60,8 +61,8 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
df=1378.125/nfft
j=int(dtbest*1378.125)
c5a=cmplx(0.0,0.0)
call timer('sh_ffts ',0)
c5a=cmplx(0.0,0.0)
do k=1,nsym
do i=1,nfft
j=j+1
@ -72,23 +73,44 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
endif
enddo
call four2a(c5a,nfft,1,1,1)
do i=1,66
do i=1,512
jj=i
if(mode65.eq.2) jj=2*i-1
if(mode65.eq.4) then
! jj=4*i-3
ff=4*(i-1)*df - 355.297852
jj=nint(ff/df)+1
if(jj.lt.1) jj=jj+512
endif
s2(i,k)=real(c5a(jj))**2 + aimag(c5a(jj))**2
if(i.gt.256) jj=i-512
s1(jj,k)=real(c5a(i))**2 + aimag(c5a(i))**2
enddo
enddo
call timer('sh_ffts ',1)
call timer('dec65b ',0)
call decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
maxsmo=0
if(mode65.eq.2) maxsmo=2
if(mode65.eq.4) maxsmo=5
do ismo=0,maxsmo
if(ismo.gt.0) then
do j=1,126
call smo121(s1(-255,j),512)
enddo
endif
do i=1,66
jj=i
if(mode65.eq.2) jj=2*i-1
if(mode65.eq.4) then
ff=4*(i-1)*df - 355.297852
jj=nint(ff/df)+1
endif
s2(i,1:126)=s1(jj,1:126)
enddo
call decode65b(s2,nflip,mode65,ntrials,naggressive,ndepth, &
mycall,hiscall,hisgrid,nexp_decode,nqd,nft,qual,nhist,decoded)
if(nft.eq.1) then
!### Should also deal with nft=2 solutions, if no nft=1.
nsmo=ismo
exit
endif
enddo
call timer('dec65b ',1)
return

View File

@ -215,16 +215,23 @@ contains
integer, intent(in) :: hard_min
integer, intent(in) :: aggression
integer param(0:8)
integer param(0:9)
integer nsmo
real rtt
common/test000/param !### TEST ONLY ###
rtt=0.001*param(4)
nsmo=param(9)
!$omp critical(decode_results)
write(*,1010) utc,snr,dt,freq,decoded
1010 format(i4.4,i4,f5.1,i5,1x,'#',1x,a22)
write(13,1012) utc,nint(sync),snr,dt,float(freq),drift,decoded,ft
1012 format(i4.4,i4,i5,f6.1,f8.0,i4,3x,a22,' JT65',i4)
if(ft.eq.2 .or. nsmo.gt.0) then
write(*,1010) utc,snr,dt,freq,decoded,ft,nsmo
else
write(*,1010) utc,snr,dt,freq,decoded
1010 format(i4.4,i4,f5.1,i5,1x,'#',1x,a22,i4,i2)
endif
write(13,1012) utc,nint(sync),snr,dt,float(freq),drift,decoded,ft,nsmo
1012 format(i4.4,i4,i5,f6.1,f8.0,i4,3x,a22,' JT65',i4,i2)
call flush(6)
! write(79,3001) utc,sync,snr,dt,freq,candidates, &
! hard_min,total_min,rtt,tries,ft,min(qual,99),decoded

View File

@ -24,7 +24,7 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
integer dat4(12)
integer mrsym(63),mr2sym(63),mrprob(63),mr2prob(63)
integer correct(63),tmp(63)
integer param(0:8)
integer param(0:9)
logical ltext
common/chansyms65/correct
common/test000/param !### TEST ONLY ###
@ -72,8 +72,6 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
call interleave63(mr2sym,-1) !from second-most-reliable symbols
call interleave63(mr2prob,-1)
ntry=0
iftest=0
if(iftest.eq.2) go to 10
call timer('ftrsd ',0)
param=0
@ -93,9 +91,8 @@ subroutine extract(s3,nadd,ntrials,naggressive,ndepth,mycall_12, &
r0=0.90
endif
if(ntotal.le.nd0 .and. rtt.le.r0) nft=1
if(iftest.eq.1) nft=1 !### TEST ONLY ###
10 if(iftest.eq.2 .or. (nft.eq.0 .and. ndepth.ge.5)) then
if(nft.eq.0 .and. ndepth.ge.5) then
mode65=1
flip=1.0
qmin=1.0

View File

@ -81,7 +81,7 @@ contains
common/decstats/ntry65a,ntry65b,n65a,n65b,num9,numfano
common/steve/thresh0
common/test000/ncandidates,nhard_min,nsoft_min,nera_best,nrtt1000, &
ntotal_min,ntry,nq1000,npp1 !### TEST ONLY ###
ntotal_min,ntry,nq1000,npp1,nsmo !### TEST ONLY ###
! 0 1 2 3 4 5 6 7 8 9 10 11
data h0/41,42,43,43,44,45,46,47,48,48,49,49/
@ -161,7 +161,7 @@ contains
call timer('decod65a',0)
call decode65a(dd,npts,first_time,nqd,freq,nflip,mode65,nvec, &
naggressive,ndepth,mycall,hiscall,hisgrid,nexp_decode, &
sync2,a,dtx,nft,qual,nhist,decoded)
sync2,a,dtx,nft,qual,nhist,nsmo,decoded)
call timer('decod65a',1)
n=naggressive
rtt=0.001*nrtt1000

View File

@ -19,8 +19,9 @@ program jt9
character c
character(len=500) optarg, infile
character wisfile*80
!### ndepth was defined as 60001. Why???
integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700, &
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=60001,nexp_decode=0
fhigh=4000,nrxfreq=1500,ntrperiod=1,ndepth=1,nexp_decode=0
logical :: read_files = .true., tx9 = .false., display_help = .false.
type (option) :: long_options(23) = [ &
option ('help', .false., 'h', 'Display this help message', ''), &