|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math3.transform.FastFourierTransformer
public class FastFourierTransformer
Implements the Fast Fourier Transform for transformation of one-dimensional real or complex data sets. For reference, see Applied Numerical Linear Algebra, ISBN 0898713897, chapter 6.
There are several variants of the discrete Fourier transform, with various
normalization conventions, which are specified by the parameter
DftNormalization
.
The current implementation of the discrete Fourier transform as a fast Fourier transform requires the length of the data set to be a power of 2. This greatly simplifies and speeds up the code. Users can pad the data with zeros to meet this requirement. There are other flavors of FFT, for reference, see S. Winograd, On computing the discrete Fourier transform, Mathematics of Computation, 32 (1978), 175 - 199.
DftNormalization
,
Serialized FormNested Class Summary | |
---|---|
private static class |
FastFourierTransformer.MultiDimensionalComplexMatrix
Deprecated. see MATH-736 |
Field Summary | |
---|---|
private DftNormalization |
normalization
The type of DFT to be performed. |
(package private) static long |
serialVersionUID
Serializable version identifier. |
private static double[] |
W_SUB_N_I
W_SUB_N_I[i] is the imaginary part of
exp(- 2 * i * pi / n) :
W_SUB_N_I[i] = -sin(2 * pi/ n) , where n = 2^i . |
private static double[] |
W_SUB_N_R
W_SUB_N_R[i] is the real part of
exp(- 2 * i * pi / n) :
W_SUB_N_R[i] = cos(2 * pi/ n) , where n = 2^i . |
Constructor Summary | |
---|---|
FastFourierTransformer(DftNormalization normalization)
Creates a new instance of this class, with various normalization conventions. |
Method Summary | |
---|---|
private static void |
bitReversalShuffle2(double[] a,
double[] b)
Performs identical index bit reversal shuffles on two arrays of identical size. |
private void |
mdfft(FastFourierTransformer.MultiDimensionalComplexMatrix mdcm,
TransformType type,
int d,
int[] subVector)
Deprecated. see MATH-736 |
Object |
mdfft(Object mdca,
TransformType type)
Deprecated. see MATH-736 |
private static void |
normalizeTransformedData(double[][] dataRI,
DftNormalization normalization,
TransformType type)
Applies the proper normalization to the specified transformed data. |
Complex[] |
transform(Complex[] f,
TransformType type)
Returns the (forward, inverse) transform of the specified complex data set. |
Complex[] |
transform(double[] f,
TransformType type)
Returns the (forward, inverse) transform of the specified real data set. |
Complex[] |
transform(UnivariateFunction f,
double min,
double max,
int n,
TransformType type)
Returns the (forward, inverse) transform of the specified real function, sampled on the specified interval. |
static void |
transformInPlace(double[][] dataRI,
DftNormalization normalization,
TransformType type)
Computes the standard transform of the specified complex data. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
static final long serialVersionUID
private static final double[] W_SUB_N_R
W_SUB_N_R[i]
is the real part of
exp(- 2 * i * pi / n)
:
W_SUB_N_R[i] = cos(2 * pi/ n)
, where n = 2^i
.
private static final double[] W_SUB_N_I
W_SUB_N_I[i]
is the imaginary part of
exp(- 2 * i * pi / n)
:
W_SUB_N_I[i] = -sin(2 * pi/ n)
, where n = 2^i
.
private final DftNormalization normalization
Constructor Detail |
---|
public FastFourierTransformer(DftNormalization normalization)
normalization
- the type of normalization to be applied to the
transformed dataMethod Detail |
---|
private static void bitReversalShuffle2(double[] a, double[] b)
a
- the first array to be shuffledb
- the second array to be shuffledprivate static void normalizeTransformedData(double[][] dataRI, DftNormalization normalization, TransformType type)
dataRI
- the unscaled transformed datanormalization
- the normalization to be appliedtype
- the type of transform (forward, inverse) which resulted in the specified datapublic static void transformInPlace(double[][] dataRI, DftNormalization normalization, TransformType type)
dataRI[0][i]
is the real part of the i
-th data point,dataRI[1][i]
is the imaginary part of the i
-th data point.
dataRI
- the two dimensional array of real and imaginary parts of the datanormalization
- the normalization to be applied to the transformed datatype
- the type of transform (forward, inverse) to be performed
DimensionMismatchException
- if the number of rows of the specified
array is not two, or the array is not rectangular
MathIllegalArgumentException
- if the number of data points is not
a power of twopublic Complex[] transform(double[] f, TransformType type)
f
- the real data array to be transformedtype
- the type of transform (forward, inverse) to be performed
MathIllegalArgumentException
- if the length of the data array is not a power of twopublic Complex[] transform(UnivariateFunction f, double min, double max, int n, TransformType type)
f
- the function to be sampled and transformedmin
- the (inclusive) lower bound for the intervalmax
- the (exclusive) upper bound for the intervaln
- the number of sample pointstype
- the type of transform (forward, inverse) to be performed
NumberIsTooLargeException
- if the lower bound is greater than, or equal to the upper bound
NotStrictlyPositiveException
- if the number of sample points n
is negative
MathIllegalArgumentException
- if the number of sample points
n
is not a power of twopublic Complex[] transform(Complex[] f, TransformType type)
f
- the complex data array to be transformedtype
- the type of transform (forward, inverse) to be performed
MathIllegalArgumentException
- if the length of the data array is not a power of two@Deprecated public Object mdfft(Object mdca, TransformType type)
transform(Complex[], TransformType)
in a row-column
implementation in any number of dimensions with
O(N×log(N)) complexity with
N = n1 × n2 ×n3 × ...
× nd, where nk is the number of elements in
dimension k, and d is the total number of dimensions.
mdca
- Multi-Dimensional Complex Array, i.e. Complex[][][][]
type
- the type of transform (forward, inverse) to be performed
mdca
as a Multi-Dimensional Complex Array, i.e. Complex[][][][]
IllegalArgumentException
- if any dimension is not a power of two@Deprecated private void mdfft(FastFourierTransformer.MultiDimensionalComplexMatrix mdcm, TransformType type, int d, int[] subVector)
mdcm
- input matrixtype
- the type of transform (forward, inverse) to be performedd
- index of the dimension to processsubVector
- recursion subvector
IllegalArgumentException
- if any dimension is not a power of two
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |