Hi Ryan,

On each pass signal candidates are sorted in order of decreasing 
signal-to-noise ratio (SNR) and then wsprd sequentially attempts to decode each 
candidate. If a decoding attempt is successful, then a reconstructed version of 
the signal is subtracted from the data vector and the algorithm moves on to try 
to decode the next candidate.

Even on the last pass, subtraction of high-SNR signal “A” may remove enough 
interference from low-SNR signal “B” so as to render signal “B” decodable when 
signal “B” would not have been decodable otherwise.

You stated that “The updated I/Q data isn’t used as the loop doesn’t execute 
again.”. This isn’t true. On each pass the [idat,qdat] vector is updated in 
subtract_signal2 after each successful decode and the updated [idat,qdat] 
vector is then used to find the bit metrics for subsequent candidates in 
routine noncoherent_sequence_detection.

73 Steve k9an

> On May 8, 2023, at 7:05 PM, Tolboom, Ryan via wsjt-devel 
> <wsjt-devel@lists.sourceforge.net> wrote:
> 
> Hello,
> 
> When wsprd runs multiple passes, it still calls subtract_signal2() as
> well as get_wspr_channel_signals() on the last pass.
> The updated I/Q data isn't used as the loop doesn't execute again.
> 
> When I modified wsprd.c to skip subtraction on the last pass I noticed
> better timing numbers (since subtract_signal2() is called one less
> time) and no detriment to my decodes.
> This was my change on line 1430 of wsprd.c
> 
>    if( subtraction && !noprint && (ipass != (npasses - 1))) {
> 
> Please let me know if there's something I'm not thinking of.
> 
> 73,
> 
> Ryan Tolboom N2BP
> 
> 
> _______________________________________________
> 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