FFT Demo Program

 "FFT Demo" is a program designed to demonstrate some of the operations on waveforms facilitated by use of the Fast Fourier Transform (FFT) and its inverse transform (IFFT).  The program and associated files are contained in fftdemo.zip.

The menu bar is equipped with the following items:

   Open Complex File
   Open Real File
   Save Complexe
   Save Real
   FFT Size
   Graph Size
   Plot style
    Line Plot
    Bar Plot
   Cos + jSin (Temporal)
   Cos + jSin (Spectral)
   Gaussian Noise
   Triangle series
   Square series
   Phase modulation
   FFT R0
   IFFT R0
   Conjugate R0
   Magnitude R0
   Power R0
   R0= X*Yconj
   R0= X*Y
   R0= X + bY
   R0= C*R0
   R0= R0+C
   R0= R0+jC
   Phase shift R0
   Integerize R0
   Autocorrelate R0
   Convolve R0
   Power Spectrum R0
   Correlate XY
   Convolve XY
   Plot Real
   Plot Imaginary
   Plot Both

In order to have data to work with, functions are needed. These can be generated from the menu list for functions, or loaded in from previously prepared files. All data is loaded into the R0 array memory. Data can be copied back and forth between R0 and the X and Y arrays. FFT operations are always performed on the data in R0 only. This necessitates some trading back and forth on dyadic operations. Data in R0 can be saved to file and retrieved any time.

The autocorrelation operation is analogous to stepping one waveform past another (or the same waveform) and adding up the shared area at each step. If a part of one waveform overlaps one of opposite sign, that contribution to shared area is negative. If both are the same sign, the area is positive. When a waveform is being compared with itself (autocorrelation), a positive maximum is always obtained when both waveforms are exactly coincident. This maximum is a measure of the total energy of the waveform.

Convolution is similar to correlation, but one waveform is reversed in time. If the reversed waveform is the impulse response of a digital filter, then the result of convolution is to apply the filter to the other waveform, and the result is a filtered version of the original signal.

The FFT and its inverse, the IFFT, are reciprocal operations. Performing one after the other will return the original signal.

The FFT transforms a signal in the time domain to one in the frequency domain. Each bin of the transformed data represents a harmonic of the repetition rate of the entire signal array. Remember that the FFT assumes that the original signal is repeated endlessly. Even though the source data may be real valued, the transformed data is usually complex, having both a real and an "imaginary" component. The power of each frequency component is obtained by multiplying the component value by its complex conjugate. The aggregate result is the power spectrum of the source signal.

The "Cos + jSin (Spectral)" function generates a waveform which can be applied in the frequency domain to time shift a signal.

The functions and operations provided permit the user to synthesize a wide variety of waveforms for study.

For further knowledge, please consult a book and/or web pages on the FFT and its uses in signal processing.

This is written in text format. The user can add notes to this file, or substitute a new text file using the same name "FFT Demo Help.txt".

Bob McClure
February 20, 2007
Rev 1.0.12