Digital Sound & Music: Concepts, Applications, & Science, Chapter 2, last updated 6/25/2013
When you play the sound file and listen carefully, you can hear that it has three tones.
MATLAB's Fourier transform (fft) returns an array of double complex values (double-
precision complex numbers) that represent the magnitudes and phases of the frequency
fftdata = fft(a);
In MATLAB's workspace window, fftdata values are labeled as type double, giving the
impression that they are real numbers, but this is not the case. In fact, the Fourier transform
produces complex numbers, which you can verify by trying to plot them in MATLAB. The
magnitudes of the complex numbers are given in the Min and Max fields, which is computed by
the abs function. For a complex number , the magnitude is computed as
Figure 2.46 Workspace in MATLAB showing values and types of variables currently in memory
To plot the results of the fft function such that the values represent the magnitudes of the
frequency components, we first apply the abs function to fftdata.
fftmag = abs(fftdata);
Let's plot the frequency components to be sure we have what we think we have.
For a sampling rate of sr on an array of sample values of size N, the Fourier transform
returns the magnitudes of frequency components evenly spaced between 0 and sr/2 Hz.
(We'll explain this completely in Chapter 5.) Thus, we want to display frequencies between 0
and sr/2 on the horizontal axis, and only the first sr/2 values from the fftmag vector.