This is a report of early results from my first attempt at implementing 2-pass decoding.
The idea was suggested by Joe a few weeks ago. The motivation is to try to squeeze out a few more decodes on crowded bands where there are a number of otherwise decodable signals being covered up by stronger signals. The approach that I used is to coherently detect and subtract each successfully decoded signal on a symbol-by-symbol basis. After a signal is decoded we know what the correct channel symbols were (as well as the start time and center frequency), so we can use that information to go back and coherently integrate over each of the symbols to obtain estimates of the complex amplitude of the signal during each symbol. We then subtract that signal before decoding the next signal. I implemented this idea in a quick and dirty way using a modified version of wsprd that has been committed as wsprd_exp. Each time wsprd_exp is run, it subtracts the decoded signals as described above and then, just before exiting, it writes the modified data to a new file named 000000_0001.c2. This new file can then be decoded again using wsprd_exp. If we are lucky, the signal subtraction in step 1 may “uncover” some new signals that will show up in the second step. Here’s the result that I got on my first try. First run (10 decodes): ./wsprd_exp -f 14.0956 150328_1948.wav 1948 -11 -1.0 14.097010 -1 AC9MB EM69 37 1948 4 -2.0 14.097024 -4 KB1CHU FN42 30 1948 7 -0.0 14.097036 0 WA1NRA FN33 37 1948 19 0.2 14.097049 0 WA3DNM FM29 37 1948 -13 -0.9 14.097061 2 IZ3ATV JN55 37 1948 -14 -0.9 14.097085 0 AD7UI DN32 37 1948 -0 3.3 14.097117 0 K0KQ DM79 30 1948 -20 -0.9 14.097129 0 K7OLN CN84 27 1948 21 -0.2 14.097150 0 K5XL EM12 33 1948 3 -0.3 14.097186 0 KE2N FM18 23 <DecodeFinished> Writing 000000_0001.c2 Second run (3 dupes plus 2 new unique decodes) ./wsprd_exp 000000_0001.c2 0001 -20 -1.0 14.097010 -1 AC9MB EM69 37 0001 -12 -0.0 14.097036 2 WA1NRA FN33 37 0001 -19 -0.9 14.097063 1 PE7ER JO33 30 0001 -19 1.2 14.097088 0 OH6LSL KP13 37 0001 -7 -0.2 14.097148 0 K5XL EM12 33 <DecodeFinished> Writing 000000_0001.c2 Consider the second run and note that AC9MB, WA1NRA, and K5XL are “dupes”. They were already decoded in the first pass. Note that their SNRs are smaller in the second pass by about 9dB, 19dB, and 28dB!, respectively. This shows that the signal subtraction is working and that I have the math basically correct. More importantly, note that PE7ER and OH6LSL were not decoded on the first pass. Thus, the second pass does seem to have “bought” us 2 more unique decodes, for a total of 12 from this file. As an afterthought, I stumbled on another interesting result just now. Consider the results from our current wsprd: ./wsprd -f 14.0956 150328_1948.wav 1948 -11 -1.0 14.097010 -1 AC9MB EM69 37 1948 4 -2.0 14.097024 -4 KB1CHU FN42 30 1948 7 -0.1 14.097036 0 WA1NRA FN33 37 1948 19 0.2 14.097049 0 WA3DNM FM29 37 1948 -14 -1.0 14.097085 0 AD7UI DN32 37 1948 -0 3.3 14.097117 0 K0KQ DM79 30 1948 21 -0.2 14.097150 0 K5XL EM12 33 1948 3 -0.3 14.097186 0 KE2N FM18 23 Note that the original wsprd produces only 8 decodes. IZ3ATV and K7OLN were decoded on the first pass of wsprd_exp whereas they were not decoded at all by wsprd. This means that the 2-pass results produced 50% more decodes (12 vs 8) than the existing decoder. The reason that the results from the first pass of wsrd_exp were better than those from our current wsprd is because wsprd_exp subtracts signals immediately after they are decoded and before moving on to the next candidate. Thus, the subtraction may very well remove interference from a signal that is just “up the band”. These first results are very encouraging! Steve k9an ------------------------------------------------------------------------------ _______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel