discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to compute FFT and IFFT in C++ OOT?


From: George Edwards
Subject: Re: How to compute FFT and IFFT in C++ OOT?
Date: Thu, 16 Dec 2021 14:47:36 -0600

Hi Ron,

Thanks again for sending the links and annotating the lines of interest. I have looked through links and have some questions:
Q1. The lib/CMakeList.txt file I can identify easily, but I am not sure which is the top level CMakeList.txt file. There are CMakeList.txt files in directories "apps" and "grc" in my project directory and I am not sure which is considered the top level. I do not know if you can help me here (thing is, in my project the contents of these CMakefileList.txt files are small and do not mimic that in the link you sent, so I have no clue).

Q2. I am reading in a fixed size vector of floats to compute the fft and output a vector of fft values (complex) the same size as the block of input, so I assumed the OOT block should be a "sync" block, right?

Q3. Assuming the input vector comes in on the variable "in" and the output vector is on the variable "out" how do I taylor the _expression_ in the link which I copied below to compute the fft and pass it to the output (plus, is volk_32fc_s32fc_multiply_32fc(...) a function in the fft computation module?):
df0555eb-9839-457b-ac3d-0a4c9d17c662.png
Thank you very much!
George
   

On Wed, Dec 15, 2021 at 12:32 AM Ron Economos <w6rz@comcast.net> wrote:

FFT support is built in to GNU Radio with FFTW. Here's how it's done. First, define it in your foo_impl.h file. The options are fft_complex_fwd, fft_complex_rev, fft_real_fwd and fft_real_rev.

https://github.com/drmpeg/gr-paint/blob/master/lib/paint_bc_impl.h#L25

https://github.com/drmpeg/gr-paint/blob/master/lib/paint_bc_impl.h#L41

Then initialize it in your foo_impl.cc constructor.

https://github.com/drmpeg/gr-paint/blob/master/lib/paint_bc_impl.cc#L47

Then execute it.

https://github.com/drmpeg/gr-paint/blob/master/lib/paint_bc_impl.cc#L175-L179

You'll need to add the component in the top level CMakeLists.txt.

https://github.com/drmpeg/gr-paint/blob/master/CMakeLists.txt#L78

And link with it in lib/CMakeLists.txt

https://github.com/drmpeg/gr-paint/blob/master/lib/CMakeLists.txt#L25

If you need a window, you can look at the block implementation file for details.

https://github.com/gnuradio/gnuradio/blob/master/gr-fft/lib/fft_v_fftw.cc

Ron

On 12/14/21 7:53 PM, George Edwards wrote:
 Dear GNURadio Community:

I am writing a C++ OOT block where the signal processing requires the computation of both fft and ifft. Is there any Gnuradio C++ functions for the fft and ifft? If not, is there any way to wrap in Python's libraries with these methods into C++ OOT?

Thank you!

Regards,
George

reply via email to

[Prev in Thread] Current Thread [Next in Thread]