"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:

**File**

Open Complex File

Open Real File

Save Complexe

Save Real

Exit

**SetUp**

FFT Size

Graph Size

Plot style

Line Plot

Bar Plot

**Functions**

Cosine

Sine

Cos + jSin (Temporal)

Cos + jSin (Spectral)

Impulse

Tooth

Tooth1

Tooth2

Sawtooth

Squarewave

Gaussian Noise

HighPass

LowPass

Triangle series

Square series

Phase modulation

**Move**

X=R0

Y=R0

R0=X

R0=Y

**Operations**

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

**Macros**

Autocorrelate R0

Convolve R0

Power Spectrum R0

Correlate XY

Convolve XY

**Plot**

Plot Real

Plot Imaginary

Plot Both

**Help**

About

Help

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