public class RealFloatFFT_Radix2 extends RealFloatFFT
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 and Description |
---|
RealFloatFFT_Radix2(int n)
Create an FFT for transforming n points of real, single precision data.
|
Modifier and Type | Method and Description |
---|---|
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.
|
backtransform, checkData, inverse, inverse, normalization, transform
public RealFloatFFT_Radix2(int n)
public void transform(float[] data, int i0, int stride)
transform
in class RealFloatFFT
public void backtransform(float[] data, int i0, int stride)
transform
.backtransform
in class RealFloatFFT
public float[] toWraparoundOrder(float[] data)
toWraparoundOrder
in class RealFloatFFT
public float[] toWraparoundOrder(float[] data, int i0, int stride)
toWraparoundOrder
in class RealFloatFFT
protected void bitreverse(float[] data, int i0, int stride)