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 least-
squares 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
ATSCRadarPager
USRP USRP2 gcell: Cell Broadband Engine SPE Scheduler & RPC
Mechanism Misc Hardware Control
BLOCKS
C++ Signal Processing Blocks:Top Block and Hierarchical Block Base ClassesSignal SourcesSignal SinksFiltersMathematicsSignal ModulationSignal DemodulationInformation Coding and DecodingSynchronizationType ConversionsSignal Level Control (AGC)Fourier TransformWavelet TransformOFDM BlocksPager BlocksMiscellaneous BlocksSlicing and Dicing StreamsVoice Encoders and DecodersBase classes for GR Blocks
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 in-
order transforms, especially in the multi-dimensional and
real-
complex cases.
GCELL
gcell:
Solves the problem of efficiently distributing potentially
small tasks across the SPEs by using a distributed SPE-
centric 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.
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
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
sub-
matrix 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
overlap-
add 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
Top Related