Performs double precision complex fast Fourier transforms (FFTs) of an RWMathVec<DComplex> vector. More...
#include <rw/cfft.h>
Public Member Functions | |
DComplexFFTServer () | |
DComplexFFTServer (size_t order) | |
DComplexFFTServer (const DComplexFFTServer &) | |
RWMathVec< DComplex > | fourier (const RWMathVec< DComplex > &v) |
RWMathVec< DComplex > | ifourier (const RWMathVec< DComplex > &v) |
DComplexFFTServer & | operator= (const DComplexFFTServer &v) |
size_t | order () const |
void | setOrder (size_t N) |
Class DComplexFFTServer performs double precision complex fast Fourier transforms (FFTs) of an RWMathVec<DComplex> vector. The transform of a complex vector is a complex vector; therefore, the server returns a complex vector for either a forward or backward (inverse) transform.
At any given moment, the server is configured to transform a vector of a specified length. This length can be set three ways:
The last method means that if the vector length changes, the server automatically reconfigures to the new length. Since this is an expensive calculation, it is most efficient to call a server repeatedly for series of the same length. Different FFT servers may be constructed to handle different lengths.
There are no restrictions on the number of points; that is, the number need not be a power of 2.
The Fourier transform calculated is:
\[ A(n) = \displaystyle\sum_{j=0}^{N-1}X(j)exp\left(\frac{-2i \pi nj}{N}\right); \quad n=0, \quad .., \quad N-1 \]
The inverse Fourier transform (IDFT) calculated is:
\[ X(j) = \displaystyle\sum_{n=0}^{N-1}A(n)exp\left(\frac{2i \pi nj}{N}\right); \quad j=0, \quad .., \quad N-1 \]
where A and X are complex. Note that the sum is not normalized; a call to fourier() followed by a call to ifourier() results in the original series multiplied by N.
DComplexFFTServer::DComplexFFTServer | ( | ) |
Constructs a complex FFT server to transform a vector of unspecified length. This length is initialized when the server is used.
DComplexFFTServer::DComplexFFTServer | ( | size_t | order | ) |
Constructs a complex FFT server designed to transform a vector of length order.
DComplexFFTServer::DComplexFFTServer | ( | const DComplexFFTServer & | ) |
Copy constructor. The new server references the old server's data.
Returns the forward FFT, as defined above, of a complex vector v. The expression:
outputs the Fourier transform of v as a complex vector with N
points. If the server is not currently configured to the length of v, it reconfigures.
Returns the inverse FFT, as defined above, of a complex vector v. The expression:
outputs the inverse Fourier transform of v as a complex vector with N
points.
DComplexFFTServer& DComplexFFTServer::operator= | ( | const DComplexFFTServer & | v | ) |
Sets self to the same order as v.
|
inline |
Returns the order of an FFT server, that is, the vector length it is currently configured to transform.
void DComplexFFTServer::setOrder | ( | size_t | N | ) |
Resets the order of an FFT server to N.
Copyright © 2021 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved. |