Problem
This post briefly describes how to obtain and plot the absolute magnitude of a sinusoid with a unity amplitude and period. and normalized frequencies of the FFT. Figure 1 sketches a proof of why the absolute magnitude of the FFT of length N of a sinusoid with a unit amplitude and period is equal to N/2.
Sinusoid 01
Here is the MATLAB code that encodes sinusoid 01 defined in Figure 2.
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 4;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01a = A*cos(wx*t + phi); %% input signal
FFT_01a = fft(s_01a); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01a, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 01a');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01a = abs(FFT_01a);
disp(magFFT_01a);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01a, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01a = 20*log10(magFFT_01a); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01a, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 3 gives the graphs computed and plotted by the above MATLAB code.
Sinusoid 02
Here is the MATLAB code for sinusoid 02 defined in Figure 7.
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 8;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01b = A*cos(wx*t + phi); %% input signal
FFT_01b = fft(s_01b); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01b, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 02');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01b = abs(FFT_01b);
disp(magFFT_01b);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01b, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01b = 20*log10(magFFT_01b); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01b, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 8 gives the graphs computed and plotted by the above MATLAB code.
Sinusoid 03
Here is the MATLAB code for sinusoid 03 in Figure 9.
| Figure 12. Plots of sinusoid 04, its absolute magnitudes, and normalized frequencies |
| Figure 12. Plots of sinusoid 04, its absolute magnitudes, and normalized frequencies |
![]() |
| Figure 1. Absolute Magnitude of the FFT |
Sinusoid 01
| Figure 2. Sinusoid 01 with A=1, T=1, L=4, x=1 |
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 4;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01a = A*cos(wx*t + phi); %% input signal
FFT_01a = fft(s_01a); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01a, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 01a');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01a = abs(FFT_01a);
disp(magFFT_01a);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01a, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01a = 20*log10(magFFT_01a); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01a, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 3 gives the graphs computed and plotted by the above MATLAB code.
| Figure 3. Plots of sinusoid 01, its absolute magnitudes, and normalized frequencies |
Sinusoid 02
| Figure 7. Sinusoid 02 with A=1, T=1, L=8, x=1 |
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 8;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01b = A*cos(wx*t + phi); %% input signal
FFT_01b = fft(s_01b); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01b, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 02');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01b = abs(FFT_01b);
disp(magFFT_01b);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01b, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01b = 20*log10(magFFT_01b); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01b, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 8 gives the graphs computed and plotted by the above MATLAB code.
| Figure 8. Plots of sinusoid 02, its absolute magnitudes, and normalized frequencies |
Sinusoid 03
| Figure 9. Sinusoid with A=1, T=1, L=16, x=1 |
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 16;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01c = A*cos(wx*t + phi); %% input signal
FFT_01c = fft(s_01c); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01c, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 03');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01c = abs(FFT_01c);
disp(magFFT_01c);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01c, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01c = 20*log10(magFFT_01c); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01c, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 10 gives the graphs computed and plotted by the above MATLAB code.
Sinusoid 04
Here is the MATLAB source for sinusoid 04 defined in Figure 11.
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 4;
x = 2;
wx = x*2*pi*fs/L %% wx frequency
s_01d = A*cos(wx*t+phi); %% input signal
FFT_01d = fft(s_01d); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01d, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid input: Example 04');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01d = abs(FFT_01d);
disp(magFFT_01d);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01d, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01d = 20*log10(magFFT_01d); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01d, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 12 gives the graphs computed and plotted by the above MATLAB code.
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 16;
x = 1;
wx = x*2*pi*fs/L %% wx frequency
s_01c = A*cos(wx*t + phi); %% input signal
FFT_01c = fft(s_01c); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01c, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid signal: Example 03');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01c = abs(FFT_01c);
disp(magFFT_01c);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01c, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01c = 20*log10(magFFT_01c); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01c, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 10 gives the graphs computed and plotted by the above MATLAB code.
| Figure 10. Plots of sinusoid 03, its absolute magnitudes, and normalized frequencies |
Sinusoid 04
| Figure 11. Sinusoid 04 with A=1, T=1, L=4, x=2 |
N=64; %% this should be a power of 2
T=1; %% this is the period
A=1; %% amplitude
phi=0.0; %% phase of the sinusoid
fs = 1/T; %% fs
t = 0:N-1 %% discrete time axis
L = 4;
x = 2;
wx = x*2*pi*fs/L %% wx frequency
s_01d = A*cos(wx*t+phi); %% input signal
FFT_01d = fft(s_01d); %% spectrum
%% Plot the sinusoid
figure(1);
subplot(3,1,1);
plot(t, s_01d, '*k');
ti = 0:.1:N-1; %% interpolate time axis in 0.1 increments
hold on;
plot(ti, A*cos(wx*ti + phi), '-k'); grid off;
title('Sinusoid input: Example 04');
xlabel('Time (samples)');
ylabel('Amplitude');
text(-8, 1, 'a)');
hold off;
%% Plot absolute magnitude at normalized frequencies
magFFT_01d = abs(FFT_01d);
disp(magFFT_01d);
tn = 0:1/N:1-1/N;
subplot(3, 1, 2);
stem(tn, magFFT_01d, 'ok'); grid on;
xlabel('Frequency (cycles per sample)');
ylabel('Magnitude (linear)');
text(-.11, 40, 'b');
%% Plotting dB scales
dbSpectrum_01d = 20*log10(magFFT_01d); %% convert into dB
subplot(3, 1, 3);
plot(tn, dbSpectrum_01d, '--ok'); grid on;
axis([0 1 -350 50]);
xlabel('Normalized frequency (cycles per sample)');
ylabel('Magnitude (dB)');
text(-.15, 50, 'c)');
Figure 12 gives the graphs computed and plotted by the above MATLAB code.
| Figure 12. Plots of sinusoid 04, its absolute magnitudes, and normalized frequencies |
