Good Morning, First of all thank you for taking the time to explain the process. I know it can be exhausting and I greatly appreciate it.
Secondly, I'd point out that the noncoherent_sequence_detection function is called before (line 1330) the subtract_signal2 function (line 1430) in the pass loop. This means that on the last pass the idat and qdat which were modified by subtract_signal2 are not used anywhere (except if you have to write a C2 file). Again, apologies if I'm mistaken. Ryan Tolboom N2BP On Tue, May 9, 2023 at 12:08 PM robert evans LAST_NAME <n...@comcast.net> wrote: > > I used to code that signal processing in fortran > because of the complex data type matrix > > I now code that in python for the same reason. > > K9AN DE N2LO~> > > > > On 05/09/2023 10:10 AM Steven Franke via wsjt-devel > > <wsjt-devel@lists.sourceforge.net> wrote: > > > > > > 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 _______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel