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.

Reply via email to