Daqarta for DOS Contents



Free Registration

Contact Us
Daqarta for DOS
Data AcQuisition And Real-Time Analysis
Shareware for Legacy Systems

From the Daqarta for DOS Help system:



The Fourier Transform is a mathematical method that converts an input signal from the TIME DOMAIN to the FREQUENCY DOMAIN. The time domain is displayed as a WAVEFORM of voltage versus time, whereas the frequency domain is shown as a SPECTRUM of magnitude or power versus frequency. Daqarta uses the F-key to toggle between the time and frequency domains.

This discussion of Fourier Transform methods will begin with the original "continuous" Fourier Transform, which is the basis for several types of analog instruments, then proceed to the Discrete Fourier Transform (DFT) needed for digital systems, and finally the Fast Fourier Transform (FFT), which is the streamlined version of the DFT in common use.

Unlike the usual "textbook" treatment of these subjects, there are NO integrals or summations, NO complex or imaginary numbers, and NO "compact" notational tricks. No math is used beyond the high school level, yet nothing has been "watered down". Instead, the focus is on a deeper understanding of fundamental principles... the "gut-level" kind of knowledge that is often missing from academic engineering formalism.


The Fourier Transform and its kin operate by analyzing an input waveform into a series of sinusoidal waves of various frequencies and amplitudes. (If you are not comfortable with sine waves, frequency, phase, and the like, Sine Wave Basics will help get you rolling.)

It turns out that any waveform can be built from only sine and cosine waves of various amplitudes, and hence any waveform can be broken down or "analyzed" into these same components. This is not due to any magical abilities of sinusoids... you could actually use practically any wave shape, no matter how silly (waves that look like the profile of a '57 Chevy or Lincoln's face, for instance). But sinusoids are useful because we can relate them to meaningful physical phenomena like vibrations: The harmonics of a voice or a violin string, the resonance of a structure during an earthquake, the buzz of insect wings, the whine of a defective gear or bearing in a machine.

The classic example of sine wave synthesis is a square wave, built from a sine wave at the fundamental frequency, plus another at 3 times that frequency (known as the "3rd harmonic") but 1/3 the amplitude, plus a 5th harmonic at 1/5 the amplitude, and so on for all odd harmonics. You can try your hand at this sort of synthesis with the Daqarta Stimulus Generator... see Making Waves for details.


The heart of all Fourier analysis is, amazingly, a single high school trigonometry formula for the product of two sines:

 sin(A) × sin(B) = 1/2 × cos(A-B) - 1/2 × cos(A+B)

That's it, the heaviest math we need to deal with here. You don't need to memorize it, since the important thing to understand is not the formula itself, but how it works. We will look at this step by step.

When you first ran across this in high school, the A and B referred to fixed angles, and this probably didn't look too useful. But it also works just fine with sine waves, where the angles are just increasing with time and the waves come from the circular nature of the sine function.

The formula can thus be used for multiplying together two "pure tone" sine waves at single frequencies A and B. This is not something we encounter in daily life, since most often we have waves that add together. For example, the sounds of two different musical instruments add together in the air... they don't multiply.

Because they add, we still have two separate waves sin(A) and sin(B) in the air, at their original frequencies A and B, which our ears will interpret as the corresponding pitches. This is not the same as sin(A+B), which would be a single new wave at a higher frequency and thus a higher pitch.

But what would happen if we could multiply two tones, which doesn't happen with normal sounds? According to the formula, we would get two completely different tones, one with a frequency that is the sum of the original two frequencies, and one that is the difference. The fact that these are cosine waves instead of sine waves is trivial: A cosine wave is just a sine wave that starts a little earlier or later in time... our ears can't tell an ongoing sine wave from an ongoing cosine wave.

Suppose the two original tone frequencies are 392 Hz and 440 Hz, equivalent to the fundamental frequencies of the G and A keys just above middle C on a piano. If we multiply these together, we get a "difference" tone of 48 Hz, and a "sum" tone of 832 Hz... not even close to the originals, which are now completely gone!

Although the formula assumes each wave has an amplitude of one unit, we could easily scale either input (or both) up or down, and the output would scale accordingly. Notice that if we multiply the A wave input by some factor Ka and the B wave by Kb, we will multiply each output by the product of these, Ka × Kb. This means that no matter if one input has a large amplitude and one has a small amplitude, both the sum tone and the difference tone would be equal in amplitude... at half of the product of the original input amplitudes.

Now suppose that both of the original tones had the same frequency, say 440 Hz. After multiplying, the "sum" tone would be 880 Hz, and the "difference" tone would be zero Hz. At zero frequency, this is hardly a "tone" any more... it would just be a constant value equal to the amplitude of the 880 Hz wave. (You might recall that the cosine of 0 is 1.)

If we try to imagine each of these as sounds, the 880 Hz wave would just be a tone that is an octave higher than the original 440 Hz wave. At any given point in the air, the pressure would rise and fall through 880 up-and-down cycles per second, but on the average the pressure at that point would be unchanged. Not so with the 0 Hz component, which would represent a constant pressure increase. Since both of these components are present at the same time, we can consider that the new air pressure would be oscillating about a higher value. If we measured the average increase in pressure, we would know the amplitude of the 0 Hz component, and since we know that both components are always equal we would know the amplitude of the 880 Hz component as well.

Notice that if the two input frequencies are not equal, there will be no 0 Hz output component and the average value will thus stay at zero.

Of course, we don't actually do all this with sounds and air pressure, since we don't have a handy way to multiply these. Instead, we convert the sound (or whatever waveform we are interested in) into voltage, and convert that into numbers that can be dealt with by computers.

The general strategy is this: Let sin(A) be an input of unknown frequency and amplitude, and sin(B) be a known reference frequency of unity amplitude. To find out if the unknown frequency is equal to the reference, we multiply these together and average the product. If the average is zero, the frequencies are different and we know nothing more. If the average is not zero, we know that the input frequency is the same as the reference, and that its amplitude is twice the average value (since the reference amplitude is unity). By trying numerous reference frequencies we can find one that matches the input.


You can demonstrate these concepts with the Virtual Source, using the special MULT function obtained by setting AM Pct below 0:
  • Bits = 16
  • Wave = Sine
  • Freq = 500 ..................... (The "input" frequency)
  • Level = half or full-scale .... (The "input" level)
  • Noise = 0 or some low level
  • FM Hz = 0
  • Delta-F Hz = 0
  • AM Hz = 100 ................... (The reference frequency)
  • AM Pct = MULT ............... (MULT level is always 100%)

The waveform will be rolling madly if the trigger source is set to Main... set it to AM instead. (The trace will still roll very slowly, since the 32-bit math used can't maintain these two frequencies at a perfect integer ratio. Use Pause to stop the rolling, if you prefer.) Notice that the extent of the waveform above the 0 Volts line appears to be equal to the extent below it... if you cut a tracing of the waveform out of heavy stock it would balance along the 0 line.

Now set AM Hz to 500 to match the input Freq, and you will see that the entire product appears ABOVE the zero line, centered about a constant value that is 1/2 of whatever you set for Level.

We haven't done any averaging here, since the Daqarta averager keeps separate averages each time point during multiple sweeps, whereas here we want to average together all the points from each sweep to get a single average value.

You can get an approximation, however, by toggling Trig to Free and letting the trace roll, then averaging a lot of sweeps. The average should be nearly a flat line at zero Volts if the frequencies are different, or at half the input amplitude if they are the same. These would correspond to the single values obtained from averages of these respective wave products.


Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
25 Years of Innovative Instrumentation
© Copyright 1999 - 2006 by Interstellar Research