BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
BALL::TFFT1D< ComplexTraits > Class Template Reference

#include <BALL/MATHS/FFT1D.h>

Inheritance diagram for BALL::TFFT1D< ComplexTraits >:
BALL::TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > >

Public Types

typedef std::complex< typename
ComplexTraits::ComplexPrecision > 
Complex
 
typedef TRegularData1D
< std::complex< typename
ComplexTraits::ComplexPrecision > > 
ComplexVector
 
- Public Types inherited from BALL::TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > >
typedef std::complex
< ComplexTraits::ComplexPrecision > 
value_type
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::iterator 
iterator
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::const_iterator 
const_iterator
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::reference 
reference
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::const_reference 
const_reference
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::pointer 
pointer
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::difference_type 
difference_type
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::size_type 
size_type
 
typedef Position IndexType
 The IndexType. More...
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision > > 
VectorType
 The type containing an STL vector of the corresponding ValueType. More...
 
typedef double CoordinateType
 The coordinate type. More...
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::iterator 
Iterator
 A mutable iterator. More...
 
typedef std::vector
< std::complex
< ComplexTraits::ComplexPrecision >
>::const_iterator 
ConstIterator
 A constant iterator. More...
 

Public Member Functions

void doFFT ()
 
void doiFFT ()
 
bool translate (double trans_origin)
 
bool setPhysStepWidth (double new_width)
 
double getPhysStepWidth () const
 
double getFourierStepWidth () const
 
double getPhysSpaceMin () const
 
double getPhysSpaceMax () const
 
double getFourierSpaceMin () const
 
double getFourierSpaceMax () const
 
Size getMaxIndex () const
 
Size getNumberOfInverseTransforms () const
 
double getGridCoordinates (Position position) const
 
Complex getData (const double pos) const
 
Complex getInterpolatedValue (const double pos) const
 
void setData (double pos, Complex val)
 
Complexoperator[] (const double pos)
 
const Complexoperator[] (const double pos) const
 
Complexoperator[] (const Position &pos)
 
const Complexoperator[] (const Position &pos) const
 
void setNumberOfFFTTransforms (Size num)
 
void setNumberOfiFFTTransforms (Size num)
 
bool isInFourierSpace () const
 
Complex phase (const double pos) const
 
Constructors and Destructors
 TFFT1D ()
 Default constructor. More...
 
 TFFT1D (const TFFT1D &data)
 Copy constructor. More...
 
 TFFT1D (Size ldn, double stepPhys=1., double origin=0., bool inFourierSpace=false)
 
virtual ~TFFT1D ()
 Destructor. More...
 
Assignment
const TFFT1Doperator= (const TFFT1D &fft1d)
 Assignment operator. More...
 
virtual void clear ()
 
virtual void destroy ()
 
Predicates
bool operator== (const TFFT1D &fft1d) const
 
- Public Member Functions inherited from BALL::TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > >
 TRegularData1D ()
 Default constructor. More...
 
 TRegularData1D (const TRegularData1D &data)
 
 TRegularData1D (const CoordinateType &origin, const CoordinateType &dimension, const CoordinateType &spacing)
 
 TRegularData1D (const IndexType &size)
 
 TRegularData1D (const VectorType &data, const CoordinateType &origin=0.0, const CoordinateType &dimension=1.0)
 
virtual ~TRegularData1D ()
 Destructor. More...
 
TRegularData1Doperator= (const TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > > &data)
 
TRegularData1Doperator= (const VectorType &data)
 
bool operator== (const TRegularData1D &data) const
 Equality operator. More...
 
BALL_INLINE bool operator!= (const TRegularData1D &data) const
 Inequality operator. More...
 
BALL_INLINE bool empty () const
 Empty predicate. More...
 
bool isInside (const CoordinateType &x) const
 Test whether a point is inside the grid. More...
 
BALL_INLINE ConstIterator begin () const
 
BALL_INLINE Iterator begin ()
 
BALL_INLINE ConstIterator end () const
 
BALL_INLINE Iterator end ()
 
BALL_INLINE size_type size () const
 
BALL_INLINE size_type max_size () const
 
BALL_INLINE void swap (TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > > &data)
 
const std::complex
< ComplexTraits::ComplexPrecision > & 
getData (const IndexType &index) const
 
std::complex
< ComplexTraits::ComplexPrecision > & 
getData (const IndexType &index)
 
const std::complex
< ComplexTraits::ComplexPrecision > & 
operator[] (const IndexType &index) const
 
std::complex
< ComplexTraits::ComplexPrecision > & 
operator[] (const IndexType &index)
 
std::complex
< ComplexTraits::ComplexPrecision > 
operator() (const CoordinateType &x) const
 
std::complex
< ComplexTraits::ComplexPrecision > 
getInterpolatedValue (const CoordinateType &x) const
 
void getEnclosingIndices (const CoordinateType &x, Position &lower, Position &upper) const
 
void getEnclosingValues (const CoordinateType &x, std::complex< ComplexTraits::ComplexPrecision > &lower, std::complex< ComplexTraits::ComplexPrecision > &upper) const
 
CoordinateType getCoordinates (const IndexType &index) const
 
IndexType getClosestIndex (const CoordinateType &x) const
 
IndexType getLowerIndex (const CoordinateType &x) const
 
const std::complex
< ComplexTraits::ComplexPrecision > & 
getClosestValue (const CoordinateType &x) const
 
std::complex
< ComplexTraits::ComplexPrecision > & 
getClosestValue (const CoordinateType &x)
 
BALL_INLINE IndexType getSize () const
 Return the number of points in the data set. More...
 
BALL_INLINE const CoordinateTypegetOrigin () const
 
BALL_INLINE const CoordinateTypegetSpacing () const
 
BALL_INLINE void setOrigin (const CoordinateType &origin)
 
BALL_INLINE const CoordinateTypegetDimension () const
 
BALL_INLINE void setDimension (const CoordinateType &dimension)
 
void resize (const IndexType &size)
 
void rescale (const IndexType &new_size)
 
std::complex
< ComplexTraits::ComplexPrecision > 
calculateMean () const
 
std::complex
< ComplexTraits::ComplexPrecision > 
calculateSD () const
 
void binaryWrite (const String &filename) const
 
void binaryRead (const String &filename)
 

Protected Attributes

Size length_
 
bool inFourierSpace_
 
Size numPhysToFourier_
 
Size numFourierToPhys_
 
double origin_
 
double stepPhys_
 
double stepFourier_
 
double minPhys_
 
double maxPhys_
 
double minFourier_
 
double maxFourier_
 
ComplexTraits::FftwPlan planForward_
 
ComplexTraits::FftwPlan planBackward_
 
ComplexdataAdress_
 
bool planCalculated_
 
- Protected Attributes inherited from BALL::TRegularData1D< std::complex< ComplexTraits::ComplexPrecision > >
CoordinateType origin_
 The origin of the data set. More...
 
CoordinateType dimension_
 The dimension (length) More...
 
CoordinateType spacing_
 The spacing. More...
 
VectorType data_
 The data. More...
 

Detailed Description

template<typename ComplexTraits>
class BALL::TFFT1D< ComplexTraits >

A class to perform Fast Fourier Transforms and inverse Fast Fourier Transforms on regularly spaced one dimensional data.

This class makes use of the freely available library FFTW, which can be found at http://www.fftw.org coordinate system can be handled automatically. The normaliztion is chosen symmetrically.

Definition at line 36 of file FFT1D.h.

Member Typedef Documentation

template<typename ComplexTraits>
typedef std::complex<typename ComplexTraits::ComplexPrecision> BALL::TFFT1D< ComplexTraits >::Complex

Definition at line 41 of file FFT1D.h.

template<typename ComplexTraits>
typedef TRegularData1D<std::complex<typename ComplexTraits::ComplexPrecision> > BALL::TFFT1D< ComplexTraits >::ComplexVector

Definition at line 42 of file FFT1D.h.

Constructor & Destructor Documentation

template<typename ComplexTraits >
BALL::TFFT1D< ComplexTraits >::TFFT1D ( )

Default constructor.

Global assignment operator from FFT2D to TRegularData2D<Complex>Global assignment operator from FFT3D to TRegularData3D<float>. This operator assigns the real part of the complex FFT2D-data to the TRegularData2D<float> to.

Definition at line 284 of file FFT1D.h.

template<typename ComplexTraits>
BALL::TFFT1D< ComplexTraits >::TFFT1D ( const TFFT1D< ComplexTraits > &  data)

Copy constructor.

template<typename ComplexTraits>
BALL::TFFT1D< ComplexTraits >::TFFT1D ( Size  ldn,
double  stepPhys = 1.,
double  origin = 0.,
bool  inFourierSpace = false 
)

Detailed constructor.

Parameters
ldnThe binary logarithm of the number of grid points (we use the logarithm to ensure that the number of points is a power of two, which is important for the FFT)
stepPhysThe step width in physical space
originThe origin of the coordinate system
inFourierSpaceFlag to decide whether the data is assumed to be in physical or fourier space
template<typename ComplexTraits>
virtual BALL::TFFT1D< ComplexTraits >::~TFFT1D ( )
virtual

Destructor.

Member Function Documentation

template<typename ComplexTraits>
virtual void BALL::TFFT1D< ComplexTraits >::clear ( )
virtual
template<typename ComplexTraits>
virtual void BALL::TFFT1D< ComplexTraits >::destroy ( )
virtual

Clear the contents and reset all attributes.

template<typename ComplexTraits>
void BALL::TFFT1D< ComplexTraits >::doFFT ( )

Perform a single fast fourier transform on the data.

template<typename ComplexTraits>
void BALL::TFFT1D< ComplexTraits >::doiFFT ( )

Perform a single inverse fourier transform on the data.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex BALL::TFFT1D< ComplexTraits >::getData ( const double  pos) const

Returns the data at the grid position closest to pos , and automatically includes the correct phase factor and normalization.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 459 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierSpaceMax ( ) const

Returns the maximal position of the grid in fourier space.

Definition at line 401 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierSpaceMin ( ) const

Returns the minimal position of the grid in fourier space.

Definition at line 395 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getFourierStepWidth ( ) const

Returns the step width in fourier space.

Definition at line 377 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getGridCoordinates ( Position  position) const

AR: Returns the grid coordinate corresponding to the position.

Definition at line 420 of file FFT1D.h.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex BALL::TFFT1D< ComplexTraits >::getInterpolatedValue ( const double  pos) const

Returns the data at point pos. If pos is not a point on the grid, the data is linearly interpolated. This method automatically includes the correct phase factor and normalization.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 482 of file FFT1D.h.

template<typename ComplexTraits >
Size BALL::TFFT1D< ComplexTraits >::getMaxIndex ( ) const

AR: Return the largest grid position direction. This method returns the maximum position allowed in the grid. As the point in the origin has the indices 0, this method returns the number of points minus one.

Definition at line 407 of file FFT1D.h.

template<typename ComplexTraits >
Size BALL::TFFT1D< ComplexTraits >::getNumberOfInverseTransforms ( ) const

AR: Return the number of inverse transforms that have been carried out using this class. This is an important factor for the normalization of the data.

Definition at line 413 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysSpaceMax ( ) const

Returns the maximal position of the grid in physical space.

Definition at line 389 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysSpaceMin ( ) const

Returns the minimal position of the grid in physical space.

Definition at line 383 of file FFT1D.h.

template<typename ComplexTraits >
double BALL::TFFT1D< ComplexTraits >::getPhysStepWidth ( ) const

Returns the step width in physical space.

Definition at line 371 of file FFT1D.h.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::isInFourierSpace ( ) const

AR: Returns true if the data is considered to be in Fourier space, false otherwise.

Definition at line 602 of file FFT1D.h.

template<typename ComplexTraits>
const TFFT1D& BALL::TFFT1D< ComplexTraits >::operator= ( const TFFT1D< ComplexTraits > &  fft1d)

Assignment operator.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::operator== ( const TFFT1D< ComplexTraits > &  fft1d) const

Equality operator.

Definition at line 295 of file FFT1D.h.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex & BALL::TFFT1D< ComplexTraits >::operator[] ( const double  pos)

Access the data at the grid position closest to pos . This function returns the "raw" data at that position.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 537 of file FFT1D.h.

template<typename ComplexTraits >
const TFFT1D< ComplexTraits >::Complex & BALL::TFFT1D< ComplexTraits >::operator[] ( const double  pos) const

Access the data at the grid position closest to pos . This function returns the "raw" data at that position.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 564 of file FFT1D.h.

template<typename ComplexTraits>
Complex& BALL::TFFT1D< ComplexTraits >::operator[] ( const Position pos)
inline

Access the (raw) data at Position pos

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 205 of file FFT1D.h.

template<typename ComplexTraits>
const Complex& BALL::TFFT1D< ComplexTraits >::operator[] ( const Position pos) const
inline

Access the (raw) data at Position pos. Const method.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 214 of file FFT1D.h.

template<typename ComplexTraits >
TFFT1D< ComplexTraits >::Complex BALL::TFFT1D< ComplexTraits >::phase ( const double  pos) const

Compute the phase factor. This computes the phase factor in fourier space that results if the origin of the coordinate system in physical space is not in the "lower left corner".

Definition at line 591 of file FFT1D.h.

template<typename ComplexTraits >
void BALL::TFFT1D< ComplexTraits >::setData ( double  pos,
Complex  val 
)

Sets the data point at the grid position closest to pos to the value val , and – if called in fourier space – automatically includes the correct phase factor and normalization.

Exceptions
Exception::OutOfGridif pos is outside the grid boundaries

Definition at line 515 of file FFT1D.h.

template<typename ComplexTraits>
void BALL::TFFT1D< ComplexTraits >::setNumberOfFFTTransforms ( Size  num)
inline

Definition at line 219 of file FFT1D.h.

template<typename ComplexTraits>
void BALL::TFFT1D< ComplexTraits >::setNumberOfiFFTTransforms ( Size  num)
inline

Definition at line 224 of file FFT1D.h.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::setPhysStepWidth ( double  new_width)

Set the step width in physical space to newWidth . The step width in fourier space is automatically adjusted accordingly. newWidth must be positive, otherwise the function does nothing and retuns false .

Definition at line 350 of file FFT1D.h.

template<typename ComplexTraits >
bool BALL::TFFT1D< ComplexTraits >::translate ( double  trans_origin)

Translate the origin in physical space about transOrigin . If the result is out of bounds, the function does nothing and returns false .

Definition at line 329 of file FFT1D.h.

Member Data Documentation

template<typename ComplexTraits>
Complex* BALL::TFFT1D< ComplexTraits >::dataAdress_
protected

Definition at line 259 of file FFT1D.h.

template<typename ComplexTraits>
bool BALL::TFFT1D< ComplexTraits >::inFourierSpace_
protected

Definition at line 244 of file FFT1D.h.

template<typename ComplexTraits>
Size BALL::TFFT1D< ComplexTraits >::length_
protected

Definition at line 243 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::maxFourier_
protected

Definition at line 253 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::maxPhys_
protected

Definition at line 251 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::minFourier_
protected

Definition at line 252 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::minPhys_
protected

Definition at line 250 of file FFT1D.h.

template<typename ComplexTraits>
Size BALL::TFFT1D< ComplexTraits >::numFourierToPhys_
protected

Definition at line 246 of file FFT1D.h.

template<typename ComplexTraits>
Size BALL::TFFT1D< ComplexTraits >::numPhysToFourier_
protected

Definition at line 245 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::origin_
protected

Definition at line 247 of file FFT1D.h.

template<typename ComplexTraits>
ComplexTraits::FftwPlan BALL::TFFT1D< ComplexTraits >::planBackward_
protected

Definition at line 256 of file FFT1D.h.

template<typename ComplexTraits>
bool BALL::TFFT1D< ComplexTraits >::planCalculated_
protected

Definition at line 260 of file FFT1D.h.

template<typename ComplexTraits>
ComplexTraits::FftwPlan BALL::TFFT1D< ComplexTraits >::planForward_
protected

Definition at line 255 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::stepFourier_
protected

Definition at line 249 of file FFT1D.h.

template<typename ComplexTraits>
double BALL::TFFT1D< ComplexTraits >::stepPhys_
protected

Definition at line 248 of file FFT1D.h.