mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-15 08:31:57 -05:00
Several tweaks to FT4 simulation and decoding procedures. Now -0.5 < DT < 0.5
This commit is contained in:
parent
013c06b6ca
commit
6ea9f4990d
@ -149,7 +149,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
go to 800
|
go to 800
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(params%nmode.eq.-4) then
|
if(params%nmode.eq.5) then
|
||||||
call timer('decft4 ',0)
|
call timer('decft4 ',0)
|
||||||
call my_ft4%decode(ft4_decoded,id2,params%nQSOProgress,params%nfqso, &
|
call my_ft4%decode(ft4_decoded,id2,params%nQSOProgress,params%nfqso, &
|
||||||
params%nutc,params%nfa,params%nfb,params%ndepth,ncontest, &
|
params%nutc,params%nfa,params%nfb,params%ndepth,ncontest, &
|
||||||
|
@ -111,18 +111,15 @@ program ft4sim
|
|||||||
c0((NN+1)*NSPS:(NN+2)*NSPS-1)=c0((NN+1)*NSPS:(NN+2)*NSPS-1)*(1.0+cos(twopi*(/(i,i=0,NSPS-1)/)/(2.0*NSPS) ))/2.0
|
c0((NN+1)*NSPS:(NN+2)*NSPS-1)=c0((NN+1)*NSPS:(NN+2)*NSPS-1)*(1.0+cos(twopi*(/(i,i=0,NSPS-1)/)/(2.0*NSPS) ))/2.0
|
||||||
c0((NN+2)*NSPS:)=0.
|
c0((NN+2)*NSPS:)=0.
|
||||||
|
|
||||||
k=nint((xdt+0.35)/dt)
|
k=nint((xdt+0.5)/dt)
|
||||||
c0=cshift(c0,-k)
|
c0=cshift(c0,-k)
|
||||||
ia=k
|
|
||||||
|
|
||||||
do ifile=1,nfiles
|
do ifile=1,nfiles
|
||||||
c=c0
|
c=c0
|
||||||
if(fspread.ne.0.0 .or. delay.ne.0.0) call watterson(c,NZZ,NWAVE,fs,delay,fspread)
|
if(fspread.ne.0.0 .or. delay.ne.0.0) call watterson(c,NZZ,NWAVE,fs,delay,fspread)
|
||||||
c=sig*c
|
c=sig*c
|
||||||
|
|
||||||
ib=k
|
|
||||||
wave=real(c)
|
wave=real(c)
|
||||||
peak=maxval(abs(wave(ia:ib)))
|
peak=maxval(abs(wave))
|
||||||
nslots=1
|
nslots=1
|
||||||
|
|
||||||
if(snrdb.lt.90) then
|
if(snrdb.lt.90) then
|
||||||
|
@ -31,7 +31,7 @@ contains
|
|||||||
class(ft4_decoder), intent(inout) :: this
|
class(ft4_decoder), intent(inout) :: this
|
||||||
procedure(ft4_decode_callback) :: callback
|
procedure(ft4_decode_callback) :: callback
|
||||||
parameter (NSS=NSPS/NDOWN)
|
parameter (NSS=NSPS/NDOWN)
|
||||||
|
parameter (NZZ=18*3456)
|
||||||
character message*37,msgsent*37,msg0*37
|
character message*37,msgsent*37,msg0*37
|
||||||
character c77*77
|
character c77*77
|
||||||
character*37 decodes(100)
|
character*37 decodes(100)
|
||||||
@ -42,8 +42,8 @@ contains
|
|||||||
character*6 hhmmss
|
character*6 hhmmss
|
||||||
character*4 cqstr,cqstr0
|
character*4 cqstr,cqstr0
|
||||||
|
|
||||||
complex cd2(0:NMAX/NDOWN-1) !Complex waveform
|
complex cd2(0:NZZ/NDOWN-1) !Complex waveform
|
||||||
complex cb(0:NMAX/NDOWN-1)
|
complex cb(0:NZZ/NDOWN-1+NN*NSS)
|
||||||
complex cd(0:NN*NSS-1) !Complex waveform
|
complex cd(0:NN*NSS-1) !Complex waveform
|
||||||
complex ctwk(2*NSS),ctwk2(2*NSS,-16:16)
|
complex ctwk(2*NSS),ctwk2(2*NSS,-16:16)
|
||||||
complex csymb(NSS)
|
complex csymb(NSS)
|
||||||
@ -60,7 +60,7 @@ contains
|
|||||||
integer apbits(2*ND)
|
integer apbits(2*ND)
|
||||||
integer apmy_ru(28),aphis_fd(28)
|
integer apmy_ru(28),aphis_fd(28)
|
||||||
integer icos4a(0:3),icos4b(0:3),icos4c(0:3),icos4d(0:3)
|
integer icos4a(0:3),icos4b(0:3),icos4c(0:3),icos4d(0:3)
|
||||||
integer*2 iwave(NMAX) !Raw received data
|
integer*2 iwave(NZZ) !Raw received data
|
||||||
integer*1 message77(77),rvec(77),apmask(2*ND),cw(2*ND)
|
integer*1 message77(77),rvec(77),apmask(2*ND),cw(2*ND)
|
||||||
integer*1 hbits(2*NN)
|
integer*1 hbits(2*NN)
|
||||||
integer graymap(0:3)
|
integer graymap(0:3)
|
||||||
@ -216,7 +216,7 @@ contains
|
|||||||
snr=candidate(3,icand)-1.0
|
snr=candidate(3,icand)-1.0
|
||||||
call ft4_downsample(iwave,dobigfft,f0,cd2) !Downsample to 32 Sam/Sym
|
call ft4_downsample(iwave,dobigfft,f0,cd2) !Downsample to 32 Sam/Sym
|
||||||
if(dobigfft) dobigfft=.false.
|
if(dobigfft) dobigfft=.false.
|
||||||
sum2=sum(cd2*conjg(cd2))/(real(NMAX)/real(NDOWN))
|
sum2=sum(cd2*conjg(cd2))/(real(NZZ)/real(NDOWN))
|
||||||
if(sum2.gt.0.0) cd2=cd2/sqrt(sum2)
|
if(sum2.gt.0.0) cd2=cd2/sqrt(sum2)
|
||||||
! Sample rate is now 12000/16 = 750 samples/second
|
! Sample rate is now 12000/16 = 750 samples/second
|
||||||
do isync=1,2
|
do isync=1,2
|
||||||
@ -225,15 +225,14 @@ contains
|
|||||||
idfmax=12
|
idfmax=12
|
||||||
idfstp=3
|
idfstp=3
|
||||||
ibmin=0
|
ibmin=0
|
||||||
! ibmax=216 !Max DT = 216/750 = 0.288 s
|
ibmax=800
|
||||||
ibmax=432
|
|
||||||
ibstp=4
|
ibstp=4
|
||||||
else
|
else
|
||||||
idfmin=idfbest-4
|
idfmin=idfbest-4
|
||||||
idfmax=idfbest+4
|
idfmax=idfbest+4
|
||||||
idfstp=1
|
idfstp=1
|
||||||
ibmin=max(0,ibest-5)
|
ibmin=max(0,ibest-5)
|
||||||
ibmax=min(ibest+5,NMAX/NDOWN-1)
|
ibmax=min(ibest+5,NZZ/NDOWN-1)
|
||||||
ibstp=1
|
ibstp=1
|
||||||
endif
|
endif
|
||||||
ibest=-1
|
ibest=-1
|
||||||
@ -462,7 +461,7 @@ contains
|
|||||||
xsnr=-20.0
|
xsnr=-20.0
|
||||||
endif
|
endif
|
||||||
nsnr=nint(max(-20.0,xsnr))
|
nsnr=nint(max(-20.0,xsnr))
|
||||||
xdt=ibest/750.0 - 0.45
|
xdt=ibest/750.0 - 0.5
|
||||||
call this%callback(sync,nsnr,xdt,f0,message,iaptype,qual)
|
call this%callback(sync,nsnr,xdt,f0,message,iaptype,qual)
|
||||||
if(ibest.ge.ibmax-15) msg0=message !Possible dupe candidate
|
if(ibest.ge.ibmax-15) msg0=message !Possible dupe candidate
|
||||||
exit
|
exit
|
||||||
|
@ -2886,7 +2886,7 @@ void MainWindow::decode() //decode()
|
|||||||
if(m_mode=="FT8") dec_data.params.lft8apon = ui->actionEnable_AP_FT8->isVisible () &&
|
if(m_mode=="FT8") dec_data.params.lft8apon = ui->actionEnable_AP_FT8->isVisible () &&
|
||||||
ui->actionEnable_AP_FT8->isChecked ();
|
ui->actionEnable_AP_FT8->isChecked ();
|
||||||
if(m_mode=="FT8") dec_data.params.napwid=50;
|
if(m_mode=="FT8") dec_data.params.napwid=50;
|
||||||
if(m_mode=="FT4") dec_data.params.nmode=-4;
|
if(m_mode=="FT4") dec_data.params.nmode=5;
|
||||||
dec_data.params.ntrperiod=m_TRperiod;
|
dec_data.params.ntrperiod=m_TRperiod;
|
||||||
dec_data.params.nsubmode=m_nSubMode;
|
dec_data.params.nsubmode=m_nSubMode;
|
||||||
if(m_mode=="QRA64") dec_data.params.nsubmode=100 + m_nSubMode;
|
if(m_mode=="QRA64") dec_data.params.nsubmode=100 + m_nSubMode;
|
||||||
|
Loading…
Reference in New Issue
Block a user