Hi Dave, That sounds like the best solution here. In my case, I am lucky that the analog bandpass is a lot smaller than the overall bandwidth - so the Nyquist bin contained mostly noise and assuming it is zero shouldn't hurt reconstruction efforts too much.
> If you want to Google the terminology, a PFB is an analysis filter bank, and the inverse is a synthesis filter bank. Thanks for pointing this out - I find DSP terminology confusingly named for newcomers, so it helps to know what to look for! Thanks to the CASPER group - I am quite grateful for the many helpful and prompt responses! Reconstructing imperfectly, Nikhil On Fri, 4 Feb 2022 at 11:26, 'Hawkins, David W (US 334B)' via [email protected] <[email protected]> wrote: > Hi Nikhil, > > > > >> perfect reconstruction / inversion is not possible because the > information in the Nyquist bin is thrown away? > > > > Correct, but imperfect reconstruction should work. > > > > A real-valued signal has a Hermitian spectrum, and an FFT has a cyclic > response. That results in two things; > > - The negative frequencies are the complex-conjugate of the positive > frequencies > - The frequency bin at -N/2 must be real (since that bin is also the > value at +N/2) > > > > So the -N/2 and N/2 channels have been corrupted/aliased by the cyclic > nature of the FFT … of by the sampling from the continuous Laplace domain > into the Z-domain … whichever way you want to think about it. > > > > Given N/2 channels of a S[n], for n = 0 to N/2-1, you just need to … > > - Put a zero at S[-N/2] > - Populate the negative frequency channels with S*[-n] = S[n] for n 1 > to N/2-1 > - And maybe throw a factor of 2 or 1/2 in there somewhere for good > measure … > > > > In a practical system, if the analog signal aliases about Nyquist anyways > … so that last channel is not that interesting. If you have interlaced > ADCs, then that channel gets corrupted by gain/offset errors in the ADC. > > > > So … imperfect reconstruction should work just fine. > > > > If you want to Google the terminology, a PFB is an analysis filter bank, > and the inverse is a synthesis filter bank. > > > > Regards, > > Dave > > > > *From:* Jack Hickish <[email protected]> > *Sent:* Friday, February 4, 2022 7:10 AM > *To:* casper <[email protected]> > *Subject:* [EXTERNAL] Re: [casper] Inverting the Polyphase Filter Bank > > > > > > > > On Fri, 4 Feb 2022 at 15:04, Nikhil Mahajan <[email protected]> > wrote: > > Hi Morag and Jack, > > > > Thank you for the prompt response. It was great to learn about the > Hermitian trick to combine 2 real FFTs - that's very interesting. > > > > So, unless I am wrong, perfect reconstruction / inversion is not possible > because the information in the Nyquist bin is thrown away? (I hope I am > wrong) > > > > I am sorry to say that I don't think you are wrong. (Though maybe we are > both wrong!) > > > > > > Cheers, > > Nikhil > > > > On Fri, 4 Feb 2022 at 05:41, Jack Hickish <[email protected]> wrote: > > > > > > On Fri, 4 Feb 2022 at 07:08, Morag Brown <[email protected]> wrote: > > Hey Nikhail, > > > > The FFT is a Hermitian function, which means that it has the property: > > > > [image: Screenshot from 2022-02-04 08-34-24.png] > > > > This principle is used in the real wideband FFT to compute 2 real FFTs > using one complex FFT core - this > <https://urldefense.us/v3/__http:/www.hyperdynelabs.com/dspdude/papers/COMPUTING*20THE*20FFT*20OF*20TWO*20REAL*20SIGNALS*20USING*20A*20SINGLE*20FFT.pdf__;JSUlJSUlJSUlJQ!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeHsjg5nVg$> > paper > explains it well. For a detailed explanation on how the CASPER FFT works > specifically, Ryan Monroe's paper on Improving the Performance and Resource > Utilization of the CASPER FFT and Polyphase FIlterbank goes into quite a > lot of detail. > > > > > > Hi Mikhil, Morag, > > > > You only get 32 output channels because the CASPER wideband FFT discards > all negative frequency components as they're just a mirror of positive > frequency components and aren't needed. > > > > This is completely right, but to address the subtlety Mikhil raised about > N/2 vs N/2+1 chans -- > > > > The CASPER FFT doesn't give you the "last" FFT bin (the one whose edge is > at the Nyquist frequency). This bin, like the DC bin, contains real-valued > output for real-valued input (since the DC bin coefficients are all 1 and > the Nyquist bin coefficients are +/-1), so I think the CASPER FFT could use > the DC bin that it does output to encode both the DC and Nyquist bin > contents (one in the real part, one in the imag). I'm fairly sure the > CASPER FFT doesn't do this but I also vaguely recall this coming up in > conversation before. I think the issue is not that the FFT internals don't > compute the relevant numbers but is simply that outputting N/2+1 channels > would lead to an annoying input:output data ratio. > > > > Cheers > > Jack > > > > > > Morag > > > > On Fri, Feb 4, 2022 at 7:10 AM Nikhil Mahajan <[email protected]> > wrote: > > Dear CASPERites, > > > > I am a graduate student at the University of Toronto (working with Marten > van Kerkwijk) and I have some raw baseband data collected using PUPPI > (Arecibo) - and I am on a quest to invert the polyphase filter bank. I have > 32 channels of complex-baseband that I would very much like to combine into > a single 100 MHz bandwidth stream. > > > > To do this, I would need to understand some of the specifics of the filter > bank pipeline (so that I can successfully invert each step). This is my > current understanding of what happened to the data I have: > > > > 1. Real-valued data sampled at 200 MS/s arrives at the Casper BEE2 board. > > 2. This goes through a real-input PFB implementation such as > `pfb_fir_real` and using a 12-tap, 64-branch polyphase filter (I have the > filter coefficients that were used here). This step outputs 64 streams of > real-valued data. > > 3. Then, for the DFT step of the filterbank, the 64 real-valued streams > are passed through the `fft_wideband_real` block to get 32 channels of > complex-valued data. > > 4. This is then saved to disk. > > > > (I hope someone familiar with PUPPI can correct me here if I am wrong > about any of the above) > > > > Step 3 is the step I am confused about. `fft_wideband_real` does not > appear to be a conventional real-input N-point FFT implementation (Else I > would have N/2 + 1 channels instead of just N/2). Some documentation on > this block says that it "computes the real-sampled Fast Fourier Transform > using the standard Hermitian conjugation trick". What is this standard > Hermitian conjugation trick? I am totally unfamiliar with this. Would I be > wrong in guessing it uses some sort of trick to convert 64 real numbers to > 32 complex numbers and then applies a regular ol' complex-valued FFT on > them? > > > > Thank you so much! I appreciate any and all guidance this mailing list can > provide. > > > > Cheers, > Nikhil Mahajan > > > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0%2B3z051d%2B%2BAB0D%3D1LHNHdOSDJp6JEYzzRXatj-ij11_qA%40mail.gmail.com > <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0*2B3z051d*2B*2BAB0D*3D1LHNHdOSDJp6JEYzzRXatj-ij11_qA*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSUlJSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeEfnPk7lg$> > . > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAGH-0Tc%2BWk1JExurEHYFPM8MarkmTY_TnjFqPpjy2a%3D7zqxvng%40mail.gmail.com > <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAGH-0Tc*2BWk1JExurEHYFPM8MarkmTY_TnjFqPpjy2a*3D7zqxvng*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSUl!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeHJUel3Cw$> > . > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw%40mail.gmail.com > <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnnp18TS5YfGmS9W5dDHyOf7GsMNjYtWVKkRrbn2GJCmw*40mail.gmail.com?utm_medium=email&utm_source=footer__;JQ!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeE0bkl4-w$> > . > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf%2B6BrDSF9He3mreK3pONw%40mail.gmail.com > <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0JSeX2niz0AtuXS3Dh51LcVqf*2B6BrDSF9He3mreK3pONw*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeGLE1N_zw$> > . > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnhQFDh3vaHV%2B0ftP7RcFpzDUcq7K3s7scEPNLfymC_Wg%40mail.gmail.com > <https://urldefense.us/v3/__https:/groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAG1GKSnhQFDh3vaHV*2B0ftP7RcFpzDUcq7K3s7scEPNLfymC_Wg*40mail.gmail.com?utm_medium=email&utm_source=footer__;JSU!!PvBDto6Hs4WbVuu7!Y44aeZoQoU3wVLMKYsmyIn2Y3LAB_IckGbbemtWHONs8VE2HI6eEpsKNJv7Cy3NhfeE0bAkq-g$> > . > > -- > You received this message because you are subscribed to the Google Groups " > [email protected]" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/4fd4163543144ce99a76194c9bd462e5%40jpl.nasa.gov > <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/4fd4163543144ce99a76194c9bd462e5%40jpl.nasa.gov?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "[email protected]" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/CAA39X0LqakcyqLfwxXrLRzrnc7nYrkfisn%3DG0q2gVpTJ3wzyRg%40mail.gmail.com.

