#include <FFT2D.h>
Public Types |
|
typedef std::complex< typename ComplexTraits::ComplexPrecision > |
Complex |
typedef TRegularData2D < std::complex< typename ComplexTraits::ComplexPrecision > > |
ComplexVector |
typedef TRegularData2D < std::complex< typename ComplexTraits::ComplexPrecision > >::IndexType |
IndexType |
Public Member Functions |
|
void | doFFT () |
Perform a single fast fourier
transform on the data. |
|
void | doiFFT () |
Perform a single inverse fourier
transform on the data. |
|
bool | translate (const Vector2 &trans_origin) |
Translate the origin in physical
space about {trans_origin}, i.e. |
|
bool | setPhysStepWidth (double new_width_x, double new_width_y) |
Set the step width in physical space
to {new_width_x, new_width_y}. |
|
double | getPhysStepWidthX () const |
Returns the step width in physical
space in X direction. |
|
double | getPhysStepWidthY () const |
Returns the step width in physical
space in Y direction. |
|
double | getFourierStepWidthX () const |
Returns the step width in fourier
space in X direction. |
|
double | getFourierStepWidthY () const |
Returns the step width in fourier
space in Y direction. |
|
double | getPhysSpaceMinX () const |
Returns the minimal position of the
grid in physical space in X direction. |
|
double | getPhysSpaceMinY () const |
Returns the minimal position of the
grid in physical space in Y direction. |
|
double | getPhysSpaceMaxX () const |
Returns the maximal position of the
grid in physical space in X direction. |
|
double | getPhysSpaceMaxY () const |
Returns the maximal position of the
grid in physical space in Y direction. |
|
double | getFourierSpaceMinX () const |
Returns the minimal position of the
grid in fourier space in X direction. |
|
double | getFourierSpaceMinY () const |
Returns the minimal position of the
grid in fourier space in Y direction. |
|
double | getFourierSpaceMaxX () const |
Returns the maximal position of the
grid in fourier space in X direction. |
|
double | getFourierSpaceMaxY () const |
Returns the maximal position of the
grid in fourier space in Y direction. |
|
Size | getMaxXIndex () const |
AR: Return the largest grid position
for the x direction. |
|
Size | getMaxYIndex () const |
AR: Return the largest grid position
for the y direction. |
|
Size | getNumberOfInverseTransforms () const |
AR: Return the number of inverse
transforms that have been carried out using this class.
|
|
Vector2 | getGridCoordinates (Position position) const |
AR: Returns the grid coordinate
corresponding to the position. |
|
Complex | getData (const Vector2 &pos) const throw (Exception::OutOfGrid) |
Returns the data at the grid
position closest to pos , and automatically includes
the correct phase factor and (symmetric)
normalization. |
|
Complex | getInterpolatedValue (const Vector2 &pos) const throw (Exception::OutOfGrid) |
Returns the data at point
pos. |
|
void | setData (const Vector2 &pos, Complex val) throw (Exception::OutOfGrid) |
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 (symmetric)
normalization. |
|
Complex & | operator[] (const Vector2 &pos) throw (Exception::OutOfGrid) |
Access the data at the grid position
closest to pos . |
|
const Complex & | operator[] (const Vector2 &pos) const throw (Exception::OutOfGrid) |
Access the data at the grid position
closest to pos . |
|
const Complex & | operator[] (const IndexType &index) const |
Nonmutable random access operator.
|
|
Complex & | operator[] (const IndexType &index) |
Mutable random access operator.
|
|
Complex & | operator[] (const Position &pos) throw (Exception::OutOfGrid) |
AR: Access the (raw) data at
Position pos. |
|
const Complex & | operator[] (const Position &pos) const throw (Exception::OutOfGrid) |
AR: Access the (raw) data at
Position pos. |
|
void | setNumberOfFFTTransforms (Size num) |
void | setNumberOfiFFTTransforms (Size num) |
Complex | phase (const Vector2 &pos) const |
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". |
|
bool | isInFourierSpace () const |
AR: Returns true if the data
is considered to be in Fourier space, false
otherwise. |
|
Constructors and Destructors
|
|
TFFT2D () | |
Default constructor. |
|
TFFT2D (const TFFT2D &data) | |
Copy constructor. |
|
TFFT2D (Size nX, Size nY, double stepPhysX=1., double stepPhysY=1., Vector2 origin=Vector2(0., 0.), bool inFourierSpace=false) | |
Detailed constructor. |
|
virtual | ~TFFT2D () |
Destructor. |
|
Assignment
|
|
const TFFT2D & | operator= (const TFFT2D &fft_2d) |
Assignment operator. |
|
virtual void | clear () |
Clear the contents. |
|
virtual void | destroy () |
Clear the contents and reset all
attributes. |
|
Predicates
|
|
bool | operator== (const TFFT2D &fft_2d) const |
Equality operator. |
|
Protected Attributes |
|
Size | lengthX_ |
Size | lengthY_ |
bool | inFourierSpace_ |
Size | numPhysToFourier_ |
Size | numFourierToPhys_ |
Vector2 | origin_ |
Origin of the grid
(offset). |
|
double | stepPhysX_ |
double | stepPhysY_ |
double | stepFourierX_ |
double | stepFourierY_ |
Vector2 | minPhys_ |
Vector2 | maxPhys_ |
Vector2 | minFourier_ |
Vector2 | maxFourier_ |
ComplexTraits::FftwPlan | planForward_ |
ComplexTraits::FftwPlan | planBackward_ |
Size | dataLength_ |
Complex * | dataAdress_ |
bool | planCalculated_ |
BALL::TFFT2D< ComplexTraits >::TFFT2D | ( | Size | nX, | |
Size | nY, | |||
double | stepPhysX =
1. , |
|||
double | stepPhysY =
1. , |
|||
Vector2 | origin = Vector2(0.,
0.) , |
|||
bool | inFourierSpace =
false |
|||
) |
Detailed constructor.
nX | The number of grid points in X direction | |
nY | The number of grid points in Y direction | |
stepPhysX | The step width in X direction in physical space | |
stepPhysY | The step width in Y direction in physical space | |
origin | The origin of the coordinate system | |
inFourierSpace | Flag to decide whether the data is assumed to be in physical or fourier space |
TFFT2D< ComplexTraits >::Complex BALL::TFFT2D< ComplexTraits >::getInterpolatedValue | ( | const Vector2 & | pos | ) | const throw (Exception::OutOfGrid) |
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 (symmetric) normalization.
Reimplemented from BALL::TRegularData2D< std::complex< ComplexTraits::ComplexPrecision > >.
References BALL::Maths::floor(), BALL::Maths::max(), BALL::Maths::min(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.
Size BALL::TFFT2D< ComplexTraits >::getMaxXIndex | ( | ) | const |
AR: Return the largest grid position for the x direction.
This method returns the maximum position allowed in the grid. As the point in the origin has the indices (0, 0), this method returns the number of points in X direction minus one.
Size BALL::TFFT2D< ComplexTraits >::getMaxYIndex | ( | ) | const |
AR: Return the largest grid position for the y direction.
This method returns the maximum position allowed in the grid. As the point in the origin has the indices (0, 0), this method returns the number of points in Y direction minus one.
Size BALL::TFFT2D< 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.
const Complex& BALL::TFFT2D< ComplexTraits >::operator[] | ( | const Position & | pos | ) | const throw (Exception::OutOfGrid) |
AR: Access the (raw) data at Position pos.
Const method.
References BALL::TFFT2D< ComplexTraits >::operator[]().
Complex& BALL::TFFT2D< ComplexTraits >::operator[] | ( | const IndexType & | index | ) |
Mutable random access operator.
References BALL::TFFT2D< ComplexTraits >::operator[]().
const Complex& BALL::TFFT2D< ComplexTraits >::operator[] | ( | const IndexType & | index | ) | const |
Nonmutable random access operator.
References BALL::TFFT2D< ComplexTraits >::operator[]().
const TFFT2D< ComplexTraits >::Complex & BALL::TFFT2D< ComplexTraits >::operator[] | ( | const Vector2 & | pos | ) | const throw (Exception::OutOfGrid) |
Access the data at the grid position closest to pos .
This function returns the "raw" data at that position.
References BALL::Maths::rint(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.
TFFT2D< ComplexTraits >::Complex & BALL::TFFT2D< ComplexTraits >::operator[] | ( | const Vector2 & | pos | ) | throw (Exception::OutOfGrid) |
Access the data at the grid position closest to pos .
This function returns the "raw" data at that position.
References BALL::Maths::rint(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.
Referenced by BALL::TFFT2D< ComplexTraits >::operator[]().
bool BALL::TFFT2D< ComplexTraits >::setPhysStepWidth | ( | double | new_width_x, | |
double | new_width_y | |||
) |
Set the step width in physical space to {new_width_x, new_width_y}.
The step width in fourier space is automatically adjusted accordingly. {new_width_x and new_width_y} must be positive, otherwise the function does nothing and retuns false .
References BALL::TFFT2D< ComplexTraits >::origin_, BALL::TVector2< T >::x, and BALL::TVector2< T >::y.
bool BALL::TFFT2D< ComplexTraits >::translate | ( | const Vector2 & | trans_origin | ) |
Translate the origin in physical space about {trans_origin}, i.e.
the new origin will be located at the former position {trans_origin}. If the result is out of bounds, the function does nothing and returns false .
References BALL::TFFT2D< ComplexTraits >::origin_, BALL::Maths::rint(), BALL::TVector2< T >::x, and BALL::TVector2< T >::y.