As implemented, cyclic spectroscopy uses a plain autocorrelation spectrometer, and so it suffers from the standard sinc channel leakage; as a result, bright RFI spikes can obliterate an entire band out to the edge of the polyphase filterbank. This patch implements a PFB-like technique to produce channels with flat tops and >50 dB isolation. It is activated by the -cyclicoversample M option; the number of lags (and runtime) are increased by a factor M. M=4 produces good results. The attached plot shows a narrow RFI spike from a 350 MHz B1937+21 observation with and without the channel isolation patch (using M=4).
Actually, there was some kind of weird memory-allocation bug with the built-in window functions that led to the second file (not sub-integration, and not later files) being nonsense. In any case, Apodization::Parzen doesn't produce a Parzen window, so I just implemented a Hanning window by hand. Really would be nice to have a Kaiser window, but it'd require a modified Bessel function of the first kind.