mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04: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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user