mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	Further improvements to JT9 decoder.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4993 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									2474f73b7b
								
							
						
					
					
						commit
						476c0683a8
					
				
							
								
								
									
										16
									
								
								lib/afc9.f90
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								lib/afc9.f90
									
									
									
									
									
								
							| @ -6,9 +6,9 @@ subroutine afc9(c3,npts,fsample,a,syncpk) | ||||
|   a(1)=0.                                   !f0 | ||||
|   a(2)=0.                                   !f1 | ||||
|   a(3)=0.                                   !f2 | ||||
|   deltaa(1)=0.2 | ||||
|   deltaa(2)=0.01 | ||||
|   deltaa(3)=0.01 | ||||
|   deltaa(1)=0.4 | ||||
|   deltaa(2)=0.1 | ||||
|   deltaa(3)=0.1 | ||||
|   nterms=3 | ||||
| 
 | ||||
| ! Start the iteration | ||||
| @ -42,17 +42,17 @@ subroutine afc9(c3,npts,fsample,a,syncpk) | ||||
|         delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5) | ||||
|         a(j)=a(j)-delta | ||||
|         deltaa(j)=deltaa(j)*fn/3. | ||||
| !        write(*,4000) iter,j,a,deltaa,-chisq2 | ||||
| !4000    format(i1,i2,6f10.4,f9.3) | ||||
| !        write(*,4000) iter,j,a,-chisq2 | ||||
| !4000    format(i1,i2,3f10.4,f11.3) | ||||
|      enddo | ||||
|      chisqr=fchisq(c3,npts,fsample,a) | ||||
|      if(chisqr/chisqr0.gt.0.9999) exit | ||||
|      if(chisqr/chisqr0.gt.0.99) exit | ||||
|      chisqr0=chisqr | ||||
|   enddo | ||||
| 
 | ||||
|   syncpk=-chisqr | ||||
| !  write(*,4001) a,deltaa,-chisq2 | ||||
| !4001 format(3x,6f10.4,f9.3) | ||||
| !  write(*,4001) a,-chisq2 | ||||
| !4001 format(3x,3f10.4,f11.3) | ||||
| 
 | ||||
|   return | ||||
| end subroutine afc9 | ||||
|  | ||||
| @ -2,22 +2,18 @@ subroutine chkss2(ss2,freq,drift,schk) | ||||
| 
 | ||||
|   real ss2(0:8,85) | ||||
|   real s(0:8,85) | ||||
|   real s1(0:5) | ||||
|   include 'jt9sync.f90' | ||||
| 
 | ||||
|   ave=sum(ss2)/(9*85) | ||||
|   if(freq+drift.eq.-999999.0) ave=0.      !To silence compiler warning | ||||
|   s=ss2/ave-1.0 | ||||
| 
 | ||||
| !  call zplot9(s,freq,drift) | ||||
|   s1=0. | ||||
|   do lag=0,5 | ||||
|      do i=1,16 | ||||
|         j=ii(i)+lag | ||||
|         if(j.le.85) s1(lag)=s1(lag) + s(0,j) | ||||
|      enddo | ||||
|   do i=1,16 | ||||
|      j=ii(i) | ||||
|      if(j.le.85) s1=s1 + s(0,j) | ||||
|   enddo | ||||
|   schk=s1(0)/16.0 | ||||
|   schk=s1/16.0 | ||||
| 
 | ||||
|   return | ||||
| end subroutine chkss2 | ||||
|  | ||||
| @ -94,9 +94,10 @@ subroutine decjt9(ss,id2,nutc,nfqso,newdat,npts8,nfa,nfsplit,nfb,ntol,  & | ||||
|            call timer('softsym ',1) | ||||
| 
 | ||||
|            sync=(syncpk+1)/4.0 | ||||
|            if(maxval(i1SoftSymbols).eq.0) cycle | ||||
|            if(nqd.eq.1 .and. ((sync.lt.0.5) .or. (schk.lt.2.0))) cycle | ||||
|            if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.schklim))) cycle | ||||
| !           if(maxval(i1SoftSymbols).eq.0) cycle | ||||
| !           if(nqd.eq.1 .and. ((sync.lt.0.5) .or. (schk.lt.1.0))) cycle | ||||
| !           if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.1.5))) cycle | ||||
|            if(nqd.ne.1 .and. ((sync.lt.1.0) .or. (schk.lt.1.8))) cycle | ||||
| 
 | ||||
|            call timer('jt9fano ',0) | ||||
|            call jt9fano(i1SoftSymbols,limit,nlim,msg) | ||||
|  | ||||
| @ -34,7 +34,7 @@ real function fchisq(c3,npts,fsample,a) | ||||
|         sum0=sum0+pp | ||||
|      endif | ||||
|   enddo | ||||
|   sync=(sum1/16.0)/(sum0/69.0) - 1.0 | ||||
|   sync=sum1/10000.0 | ||||
|   fchisq=-sync | ||||
| 
 | ||||
|   return | ||||
|  | ||||
| @ -69,7 +69,7 @@ subroutine jt9fano(i1SoftSymbols,limit,nlim,msg) | ||||
|        ncycles,metric,ierr) | ||||
| 
 | ||||
|   nlim=ncycles/(nbits+31) | ||||
|   if(ncycles.lt.(nbits*limit)) then | ||||
|   if(ncycles.lt.((nbits+31)*limit)) then | ||||
|      nbytes=(nbits+7)/8 | ||||
|      do i=1,nbytes | ||||
|         n=i1DecodedBytes(i) | ||||
|  | ||||
| @ -34,10 +34,6 @@ subroutine symspec2(c5,nz3,nsps8,nspsd,fsample,freq,drift,snrdb,schk,    & | ||||
|   enddo | ||||
| 
 | ||||
|   call chkss2(ss2,freq,drift,schk) | ||||
|   if(schk.lt.1.8) then | ||||
|      i1SoftSymbolsScrambled=0 | ||||
|      go to 900 | ||||
|   endif | ||||
| 
 | ||||
|   ss=0. | ||||
|   sig=0. | ||||
| @ -87,5 +83,5 @@ subroutine symspec2(c5,nz3,nsps8,nspsd,fsample,freq,drift,snrdb,schk,    & | ||||
|      enddo | ||||
|   enddo | ||||
| 
 | ||||
| 900 return | ||||
|   return | ||||
| end subroutine symspec2 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user