Class FastCosineTransform
- java.lang.Object
-
- org.apache.commons.math4.transform.FastCosineTransform
-
- All Implemented Interfaces:
Function<double[],double[]>
,UnaryOperator<double[]>
,RealTransform
public class FastCosineTransform extends Object implements RealTransform
Implements the Fast Cosine Transform for transformation of one-dimensional real data sets. For reference, see James S. Walker, Fast Fourier Transforms, chapter 3 (ISBN 0849371635).There are several variants of the discrete cosine transform. The present implementation corresponds to DCT-I, with various normalization conventions, which are specified by the parameter
FastCosineTransform.Norm
.DCT-I is equivalent to DFT of an even extension of the data series. More precisely, if x0, …, xN-1 is the data set to be cosine transformed, the extended data set x0#, …, x2N-3# is defined as follows
- xk# = xk if 0 ≤ k < N,
- xk# = x2N-2-k if N ≤ k < 2N - 2.
Then, the standard DCT-I y0, …, yN-1 of the real data set x0, …, xN-1 is equal to half of the N first elements of the DFT of the extended data set x0#, …, x2N-3#
yn = (1 / 2) ∑k=02N-3 xk# exp[-2πi nk / (2N - 2)] k = 0, …, N-1.The present implementation of the discrete cosine transform as a fast cosine transform requires the length of the data set to be a power of two plus one (N = 2n + 1). Besides, it implicitly assumes that the sampled function is even.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FastCosineTransform.Norm
Normalization types.
-
Constructor Summary
Constructors Constructor Description FastCosineTransform(FastCosineTransform.Norm normalization)
FastCosineTransform(FastCosineTransform.Norm normalization, boolean inverse)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double[]
apply(double[] f)
Returns the transform of the specified data set.double[]
apply(DoubleUnaryOperator f, double min, double max, int n)
Returns the transform of the specified function.
-
-
-
Constructor Detail
-
FastCosineTransform
public FastCosineTransform(FastCosineTransform.Norm normalization, boolean inverse)
- Parameters:
normalization
- Normalization to be applied to the transformed data.inverse
- Whether to perform the inverse transform.
-
FastCosineTransform
public FastCosineTransform(FastCosineTransform.Norm normalization)
- Parameters:
normalization
- Normalization to be applied to the transformed data.
-
-
Method Detail
-
apply
public double[] apply(double[] f)
Returns the transform of the specified data set.- Specified by:
apply
in interfaceFunction<double[],double[]>
- Specified by:
apply
in interfaceRealTransform
- Parameters:
f
- the data array to be transformed (signal).- Returns:
- the transformed array (spectrum).
- Throws:
IllegalArgumentException
- if the length of the data array is not a power of two plus one.
-
apply
public double[] apply(DoubleUnaryOperator f, double min, double max, int n)
Returns the transform of the specified function.- Specified by:
apply
in interfaceRealTransform
- Parameters:
f
- Function to be sampled and transformed.min
- Lower bound (inclusive) of the interval.max
- Upper bound (exclusive) of the interval.n
- Number of sample points.- Returns:
- the result.
- Throws:
IllegalArgumentException
- if the number of sample points is not a power of two plus one, if the lower bound is greater than or equal to the upper bound, if the number of sample points is negative.
-
-