jnt.FFT
Class RealFloatFFT_Radix2
java.lang.Object
|
+--jnt.FFT.RealFloatFFT
|
+--jnt.FFT.RealFloatFFT_Radix2
- public class RealFloatFFT_Radix2
- extends RealFloatFFT
Computes FFT's of real, single precision data where n is an integral power of 2.
The physical layout of the mathematical data d[i] in the array data is as follows:
d[i] = data[i0 + stride*i]
The FFT (D[i]) of real data (d[i]) is complex, but restricted by symmetry:
D[n-i] = conj(D[i])
It turns out that there are still n `independent' values, so the transformation
can still be carried out in-place.
For RealFloatFFT_Radix2, the correspondence is as follows:
Logical | | Physical |
Re(D[0]) | = | data[0] |
Im(D[0]) | = | 0 |
Re(D[1]) | = | data[1] |
Im(D[1]) | = | data[n-1] |
... | | ... |
Re(D[k]) | = | data[k] |
Im(D[k]) | = | data[n-k] |
... | | ... |
Re(D[n/2]) | = | data[n/2] |
Im(D[n/2]) | = | 0 |
... | | ... |
Re(D[n-k]) | = | data[k] |
Im(D[n-k]) | = | -data[n-k] |
... | | ... |
Re(D[n-1]) | = | data[1] |
Im(D[n-1]) | = | -data[n-1] |
Constructor Summary |
RealFloatFFT_Radix2(int n)
Create an FFT for transforming n points of real, single precision data. |
Method Summary |
void |
backtransform(float[] data,
int i0,
int stride)
Compute the (unnomalized) inverse FFT of data, leaving it in place. |
protected void |
bitreverse(float[] data,
int i0,
int stride)
|
float[] |
toWraparoundOrder(float[] data)
Return data in wraparound order. |
float[] |
toWraparoundOrder(float[] data,
int i0,
int stride)
Return data in wraparound order. |
void |
transform(float[] data,
int i0,
int stride)
Compute the Fast Fourier Transform of data leaving the result in data. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
RealFloatFFT_Radix2
public RealFloatFFT_Radix2(int n)
- Create an FFT for transforming n points of real, single precision data.
n must be an integral power of 2.
transform
public void transform(float[] data,
int i0,
int stride)
- Compute the Fast Fourier Transform of data leaving the result in data.
See Radix2 Transform Layout for description of
the resulting data layout.
- Overrides:
- transform in class RealFloatFFT
backtransform
public void backtransform(float[] data,
int i0,
int stride)
- Compute the (unnomalized) inverse FFT of data, leaving it in place.
The data must be in the same arrangement as that produced by
transform.
- Overrides:
- backtransform in class RealFloatFFT
toWraparoundOrder
public float[] toWraparoundOrder(float[] data)
- Return data in wraparound order.
- Overrides:
- toWraparoundOrder in class RealFloatFFT
- See Also:
- wraparound format
toWraparoundOrder
public float[] toWraparoundOrder(float[] data,
int i0,
int stride)
- Return data in wraparound order.
i0 and stride are used to traverse data; the new array is in
packed (i0=0, stride=1) format.
- Overrides:
- toWraparoundOrder in class RealFloatFFT
- See Also:
- wraparound format
bitreverse
protected void bitreverse(float[] data,
int i0,
int stride)