Original Spectrum Data | FFT Input Data | FFT Output Data | Data Files and Source Code

Seeing as we here at CIMSS/SSEC do lots and lots of FFT's for spectrum -> interferogram transformation and vice versa, I put out the following data so that we can be sure that the particular FFT algorithm (in whatever language) does not introduce artifacts into our work.

The software that gets shipped with the AERI systems uses the Numerical Recipes FFT code
REALFT and FOUR1. A description of how these algorithms work can be found on pp498-508
in Press *et al*, "Numerical Recipes in FORTRAN. The Art of Scientific Computing",
2nd Ed, Cambridge University Press 1992. The IDL FFT employs a prime factor algorithm that
returns the complex discrete Fourier transform of the input.

While the Fortran and IDL FFT's produce essentially the same result, the structure of the input and output data arrays, while consistent within algorithms, is not always clear. The purpose of this web page is to explain how to input data to these routines and provide an example.

The number of points in the real and imaginary spectra is 16385. The first point
corresponds to 0cm^{-1} and the last point, 16385, corresponds to the
Nyquist frequency. The total number of complex valued points is thus 2^{14} + 1.

Figure 1. |
---|

Figure 2. |
---|

To provide a real, asymmetric interferogram upon Fourier transformation, the input spectrum must be Hermitian. Thus the imaginary component is multiplied by -1 after being reflected. This gives the FFT input spectrum as shown in figure 3.

Figure 3. |
---|

The data as shown in figure 3 is what is used directly in the IDL FFT function. For the Fortran FOUR1 the real and imaginary parts of the reflected data are provided in a REAL*4 array with the real and imaginary components alternating as shown in figure 4.

Figure 4. |
---|

This format of spectrum input is also used by REALFT *except* that only the positive
spectral frequencies are input and the Nyquist frequency is not included, i.e. only 2^{14}
points are used with the real and imaginary components of each point alternating in the REALFT
input array. It is not altogether clear as to what happens to the Nyquist point. In this example
the Nyquist point is zero (due to the spectral extension) but this may not always be the case.

Figure 5. |
---|

Figure 6. |
---|

Figure 7. |
---|

- Input data (binary), fft_input.dat
- IDL FFT test program, test_idlfft.pro
- Fortran FFT test code,
- Ancillary IDL code,
- Function to read input data, read_fft_input.pro
- Function to read REALFT output, read_realft.pro
- Function to read FOUR1 output, read_four1.pro
- Procedure to create the data plots, plot_fft_test.pro

[ TOP OF PAGE | UP ]

*This page maintained by Paul
van Delst
Last updated January 22, 1997*