Hi Steve,

Thanks for your report on two-pass decoding.  It's great to see that it 
can be so effective!

I won't have time to look at what you've done until after my return home 
on June 24.  After a quick look, it seems that one thing you've done 
differently from what I had imagined is doing the signal subtraction on 
a symbol-by-symbol basis.

I was thinking of maintaining continuity between symbols, by fitting a 
complex function, perhaps a moderately high-order polynomial, as a 
multiplier of the idealized (unit amplitude) transmitted signal.  The 
subtraction of each signal could then be done more accurately, with less 
concern about also subtracting portions of competing signals along with 
the ones already decoded.

On the other hand, perhaps simpler is better.  The reduced amplitudes of 
your "dupes" on the second pass, and the absence of more of them, is 
already quite impressive.

        -- 73, Joe, K1JT

On 6/14/2015 10:14 PM, Steven Franke wrote:
> 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

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

Reply via email to