FOURIER TRANSFORMS CENG 5931: GNU RADIO Dr. George Collins Contents Introduction GSL Modules and Blocks FFTW GCELL Classes Functions Conclusion Introduction Fourier Transform: Mathematical operation that decomposes a signal into its constituent frequencies. Frequency domain. One complex-valued function of a real variable into another (Mathematical Terms) Essential for high-speed computing. 2 types: DFT & FFT Introduction Fast Fourier transform: Efficient algorithm to compute the discrete Fourier transform (DFT) and its inverse. Algorithms involving a wide range of mathematics, from simple complex-number arithmetic to group theory and number theory. DFT decomposes a sequence of values into components of different frequencies. FFT is a way to compute the same result more quickly. Introduction GNU RADIO: Free software development toolkit that provides the signal processing runtime and processing blocks to implement software radios. Used in hobbyist, academic and commercial environments to support wireless communications research. Applications are written using Python. Signal processing path is implemented in C++ using processor floating point extensions. GSL GNU Scientific Library (GSL): Numerical library for C and C++ programmers. Free software under the GNU General Public License. Provides a wide range of mathematical routines such as random number generators, special functions and leastsquares fitting. 1000 functions. Some of them are: Complex Numbers, Roots of Polynomials, Vectors and Matrices, Permutations, Linear Algebra, Eigen systems, Fast Fourier Transforms, Differential Equations, IEEE Floating-Point, Interpolation, MODULES GNU Radio C++ Signal Processing Blocks Digital Filter Design Miscellaneous Implementation Details Applications ATSC Radar Pager USRP USRP2 gcell: Cell Broadband Engine SPE Scheduler & RPC Mechanism Misc Hardware Control BLOCKS C++ Signal Processing Blocks: Top Block and Hierarchical Block Base Classes Signal Sources Signal Sinks Filters Mathematics Signal Modulation Signal Demodulation Information Coding and Decoding Synchronization Type Conversions Signal Level Control (AGC) Fourier Transform Wavelet Transform OFDM Blocks Pager Blocks Miscellaneous Blocks Slicing and Dicing Streams Voice Encoders and Decoders Base classes for GR Blocks Collaboration diagram FFTW FFTW: C subroutine library for computing the Discrete Fourier Transform in one or more dimensions, of both real and complex data, and of arbitrary input size. Benchmarks, performed on a variety of platforms Superior to other publicly available FFT software. Portable: the program will perform well on most architectures without modification. Appears to be the fastest program most of the time for inorder transforms, especially in the multi-dimensional and realcomplex cases. GCELL gcell: Solves the problem of efficiently distributing potentially small tasks across the SPEs by using a distributed SPEcentric scheduler that pulls work to SPEs as they become available. Provides high-performance DMA of arguments to and from the SPEs. Task completion notification to client processes. Binding and rendezvous between PPE and SPE code. GCELL struct gc_job_desc: "job description" that is DMA'd to/from the SPE. class gc_job_manager: Abstract class that manages SPE jobs. class gcell_fft_vcc: Compute forward or reverse FFT. Complex vector in /complex vector out. Fourier Transform CLASSES: gr_goertzel_fc gr_fft_vcc gr_fft_vcc_fftw gr_fft_vfc gcell_fft_vcc CLASSES gr_goertzel_fc Goertzel single-bin DFT calculation CLASSES gr_fft_vcc Compute forward or reverse FFT. complex vector in / complex vector out. Abstract base class. CLASSES gr_fft_vcc_fftw Compute forward or reverse FFT. complex vector in / complex vector out. Concrete class that uses FFTW CLASSES gr_fft_vfc Compute forward FFT. float vector in / complex vector out CLASSES gcell_fft_vcc Compute forward or reverse FFT. complex vector in / complex vector out. Concrete class that uses gcell to offload FFT to SPEs. FUNCTIONS fft (a, n, dim) a is a matrix fft (a) computes the FFT for each column of a. n is expected to be an integer specifying the number of elements of a to use dim is an integer specifying the dimension of the matrix along which the FFT is performed FUNCTIONS ifft (a, n, dim) a is a matrix fft (a) computes the inverse FFT for each column of a. n is expected to be an integer specifying the number of elements of a to use dim is an integer specifying the dimension of the matrix along which the inverse FFT is performed FUNCTIONS fft2 (a, n, m) Computes the two-dimensional FFT of a The optional arguments n and m may be used to specify the number of rows and columns of a to use. If either of those is larger than the size of a, a is resized and padded with zeros. If a is a multi-dimensional matrix, each two-dimensional submatrix of a is treated separately ifft2(a, n, m)… similar to the above function. FUNCTIONS fftn (a, size) Compute the N-dimensional FFT of a. The optional vector argument size may be used specify the dimensions of the array to be used. If an element of size is smaller than the corresponding dimension, then the dimension is truncated prior to performing the FFT. Otherwise if an element of size is larger than the corresponding dimension a is resized and padded with zeros. ifftn (a, size)…similar to the above function. FUNCTIONS fftconv (a, b, n) Return the convolution of the vectors a and b, as a vector with length equal to the length (a) + length (b) - 1. If a and b are the coefficient vectors of two polynomials, the returned value is the coefficient vector of the product polynomial. The computation uses the FFT by calling the function fftfilt. If the optional argument n is specified, an N-point FFT is used. FUNCTIONS fftfilt (b, x, n) With two arguments, fftfilt filters x with the FIR filter b using the FFT. Given the optional third argument, n, fftfilt uses the overlapadd method to filter x with b using an N-point FFT. If x is a matrix, filter each column of the matrix. CONCLUSION We had discussed several kind of blocks that are used in GNU python programming on c++ platform. We had seen different kinds of functions and classes that are used in GNU library to calculate the fourier transforms, in common the FFT. REFERENCES http://en.wikipedia.org/wiki/Fourier_transform http://en.wikipedia.org/wiki/Fast_Fourier_transform http://gnuradio.org/redmine/wiki/gnuradio http://www.gnuradio.org/redmine/wiki/1/Gcell http://www.fftw.org/ http://directory.fsf.org/project/fftw/ http://www.network-theory.co.uk/docs/octave3/octave_256.html http://www.gnu.org/software/gsl/ http://gnuradio.org/doc/doxygen/modules.html http://gnuradio.org/doc/doxygen/group__block.html http://gnuradio.org/doc/doxygen/group__dft__blk.html http://gnuradio.org/doc/doxygen/classgr__goertzel__fc.html#_details Thank You... By Bhargav Chava Queries… Any Queries???