Hi Steve and all,

Thanks for passing on your test results with JT65 signal subtraction. 
Very interesting!

> 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.

In the WSJT slow modes PTT is nominally asserted at t=0 s and audio 
starts at t=1 s in a UTC minute.  SimJT generates wav files in which the 
noise starts at t=0 and signal starts at t=1. I guess this is 
essentially what you observed?

> 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.

I haven't yet looked at or tried your subtraction routine, so I can't 
comment in detail.  You're probably right that the time synchronization 
is not quite good enough to assure clean subtraction of a decoded 
signal, near the symbol boundaries.  (BTW: this is one of the things 
presently done somewhat differently in WSJT and WSJT-X.)

I agree that we'll probably get most of any available improvement in 
decoding with a two-pass scheme, as we have done in WSPR.


You may have noticed I've been playing with another test program, 
rsdtest0[.exe].  It starts out with the arrays mrsym, mrprob, and 
mr2sym, as computed by demod64a.f90.  It then does a quick attempt at 
what one might call "experience-based decoding" before calling sfrsd2.

By this I mean a scheme in which a list of plausibly likely messages is 
encoded using encode_rs_int() and tested for soft distance from the 
observed mrsym, mrprob, mr2sym, information in the same way we do it in 
sfrsd2.  If any of these produces an acceptably small value for 
nhard+nsoft, we're done -- with no need to do the potentially expensive 
random-erasures loop in sfrsd2.  In effect, we're testing some likely 
codewords before going on to look for others that we couldn't guess.

A list of some of the most interesting plausible messages can be quickly 
made from a table of previously decoded call+grid combinations, perhaps 
limited to decodes on the currently active band or propagation mode 
(such as EME or scatter).  The messages might have the form

   MyCall Call Grid
   CQ Call Grid

...etc.

Here's a short summary of early results, using our group of 1000 SimJT 
files with S/N = -24 dB:

neme nexplim decodes time
---------------------------
0       0      811   231 s
0      72      904   101
0      90     1000   1.6
1      90     1000   0.5

With neme=0 the program uses all 5651 callsigns found in a particular 
CALL3.TXT file found on my development machine.  With neme=1 it uses 
only the 1769 calls marked as being active on EME.

Parameter nexplim is the specified limit below which a soft distance is 
deemed acceptable, and setting nexplim=72 provides the same limit now 
hard-coded in sfrsd2.c.  In effect, we try to find the correct codeword 
by guessing what it might be, and then testing the guess to see if it's 
correct.  If the transmitted message is one of those in the list of 
guesses, we can get the same answer that we'd get by setting ntrials to 
a very large number -- but we get it almost immediately.  The speedup is 
more than a factor of 100.

A similar approach has been used for years in WSJT.  For the EME case, 
where the number of active stations is no more than a few thousand, it 
works extremely well.

        -- Joe, K1JT

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

Reply via email to