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