Hi Joe and all,

I’ve just committed a batch of modified routines associated with my attempts to 
improve the low-SNR performance of wsjt-x. 

I did a number of experiments aimed at identifying why wsjt-x was not 
performing as well as wsjt on our low-snr test files. I used the jt65 test 
program and the usual set of 1000 .wav files, each of which contains a single 
simulated signal with -24dB snr. The original batch of test files was generated 
using JTSim, and contain 8-bit data at 11.025kS/s. I used the *nix program 
“sox” to convert the files to 16-bits at 12kS/s.

I started by doing some tests that convinced me that the solution would involve 
decreasing the estimation errors for both f0 and dt. In order to get to the 
bottom of this with my sanity intact, I ended up making the changes necessary 
to remove all empirical dt offsets and also all zero-padding at the beginning 
of data arrays. Negative dt’s are handled by testing indices to ensure that 
they remain within the bounds of the relevant arrays.

At present, the convention is that dt is referenced to the beginning of the wav 
file. So a transmission that starts at 1.0 second into the file will have a 
time stamp of 1.0. It will be a simple matter to subtract 1 from the displayed 
value to make the numbers equivalent to what the current wsjt-x prints out.

I gave up tracking the effect of each and every change - but I believe that the 
most significant ones are:
(i) Using full-symbol coherent integration when calculating ccf between data 
and sync sequence instead of the prior scheme which did half-symbol integration 
and then summed the powers from the two half-symbols
(ii) Added a “peakup” step to the final dt calculated using 1/16-of-a-symbol 
steps. This gets us to sub-1/16-symbol accuracy which makes a noticeable 
improvement at low SNR’s.
(iii) For reasons that I don’t understand - on my data, it seems to be slightly 
better to fit for a(1),a(2),a(3), but then ignore a(3) when tweaking the 
frequency.

Since I had to make a significant number of changes, I’ve confined them to 
renamed routines that have the _exp appended to the normal filename. These 
modified routines are invoked in the Makefile.jt65, but they are not yet used 
in 1.6.1. I’d like to know that you can reproduce my improved results and that 
you are comfortable with the changes before we consider moving them into 
wsjt-x. 

Here’s a summary of the improvement on my data:

-24 dB files, ntrials=10000 
  before changes: 639/1000 (this is what the current 1.6.1 gives) 
  after changes: 827/1000

333 hf .wav files recorded on 20m, 2 passes, ntrials=1000
  before: 4044
  after: 4150

Steve k9an



------------------------------------------------------------------------------
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to