Fourier Transform

advertisement
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???
Download