Hi Joe and all,
I’ve done some preliminary work on signal subtraction for jt65. The routine 
subtract65 is intended to be called in jt65a within the “icand” loop. I have 
commented out the call for now - but I have done enough tests to convince 
myself that the math is basically correct and that the routine does what we 
expect it to do. The channel symbols are passed to the subtract65 routine from 
extract() using a new common block that I called “chansyms65”. 

Here are links to two screenshots obtained using the Baudline analysis tool:

https://dl.dropboxusercontent.com/u/33211132/jt65_before_subtraction.tiff
https://dl.dropboxusercontent.com/u/33211132/jt65_after.tiff

The first is the spectrogram of a .wav file that contains three strong signals. 
The second screenshot shows three successive spectrograms obtained after 
subtracting each of the signals, in succession. Thus, the top section shows the 
spectrum after subtracting the first signal, the middle is after subtracting 
the second, and so on. 

There are a couple of things that need to be looked at in more detail — I had 
to add a mysterious 1s offset to the “dt” parameter, and I don’t understand why 
this was necessary. Also, I’m not happy with the relatively large glitches that 
occur at each symbol transition. It may be that the time synchronization is in 
WSJT-X coarser than I am used to from the wspr subtraction exercise - or 
perhaps I don't have the dt offset set correctly. 

Since the subtraction is done on the 12000 samp/s dd array, it is relatively 
slow. That’s one reason why the complex-amplitude smoothing filter is so short 
at present. If we decide that a longer filter is necessary, then it’ll probably 
be worthwhile to do this filter using the fft.

My current thinking is that we’ll probably reap most of the available benefit 
by doing two passes. The first with a high sync threshold (I used 5.5 for my 
intitial tests) to subtract out a few strong signals. Then the second pass 
would run with the usual, lower threshold, and might not use subtraction at 
all. To implement this cleanly, it looks like we would add the sync threshold 
to the arguments passed from jt65a down through decode65a->decode65b->extract 
so that the threshold can be varied from within the two-pass subtraction loop 
in jt65a — or I guess we could add another common block.

As always, comments and suggestions welcome! 
Steve


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

Reply via email to