This example shows a MATLAB M-file for plotting the truncated Fourier Series of a square wave. The amplitude and phase spectrums are also plotted.
MATLAB M-File example8.m:
%
% Filename: example8.m
%
% Description: This M-file plots the truncated Fourier Series
% for a square wave as well as its amplitude
% spectrum.
clear; % clear all variables
clf; % clear all figures
N = 11; % summation limit (use N odd)
wo = pi; % fundamental frequency (rad/s)
c0 = 0; % dc bias
t = -3:0.01:3; % declare time values
figure(1) % put first two plots on figure 1
% Compute yce, the Fourier Series in complex exponential form
yce = c0*ones(size(t)); % initialize yce to c0
for n = -N:2:N, % loop over series index n
cn = 2/(j*n*wo); % Fourier Series Coefficient
yce = yce + cn*exp(j*n*wo*t); % Fourier Series computation
end
subplot(2,1,1)
plot([-3 -2 -2 -1 -1 0 0 1 1 2 2 3],... % plot original y(t)
[-1 -1 1 1 -1 -1 1 1 -1 -1 1 1], ':');
hold;
plot(t,yce);
grid;
xlabel('t (seconds)')
ylabel('y(t)');
ttle = ['EE341.01: Truncated Exponential Fourier Series with N = ',...
num2str(N)];
title(ttle);
hold
% Compute yt, the Fourier Series in trigonometric form
yt = c0*ones(size(t)); % initialize yce to c0
for n = 1:2:N, % loop over series index n
cn = 2/(j*n*wo); % Fourier Series Coefficient
yt = yt + 2*abs(cn)*cos(n*wo*t+angle(cn)); % Fourier Series computation
end
subplot(2,1,2)
plot([-3 -2 -2 -1 -1 0 0 1 1 2 2 3],... % plot original y(t)
[-1 -1 1 1 -1 -1 1 1 -1 -1 1 1], ':');
hold;
plot(t,yt);
grid;
xlabel('t (seconds)')
ylabel('y(t)');
ttle = ['EE341.01: Truncated Trigonometric Fourier Series with N = ',...
num2str(N)];
title(ttle);
hold
% Draw the amplitude spectrum from exponential Fourier Series
figure(2) % put next plots on figure 2
subplot(2,1,1)
stem(0,c0); % plot c0 at nwo = 0
hold
for n = -N:2:N, % loop over series index n
cn = 2/(j*n*wo); % Fourier Series Coefficient
stem(n*wo,abs(cn)) % plot |cn| vs nwo
end
for n = -N+1:2:N-1, % loop over even series index n
cn = 0; % Fourier Series Coefficient
stem(n*wo,abs(cn)*180/pi); % plot |cn| vs nwo
end
xlabel('w (rad/s)')
ylabel('|cn|')
ttle = ['EE341.01: Amplitude Spectrum with N = ',num2str(N)];
title(ttle);
hold
% Draw the phase spectrum from exponential Fourier Series
subplot(2,1,2)
stem(0,angle(c0)*180/pi); % plot angle of c0 at nwo = 0
hold
for n = -N:2:N, % loop over odd series index n
cn = 2/(j*n*wo); % Fourier Series Coefficient
stem(n*wo,angle(cn)*180/pi); % plot |cn| vs nwo
end
for n = -N+1:2:N-1, % loop over even series index n
cn = 0; % Fourier Series Coefficient
stem(n*wo,angle(cn)*180/pi); % plot |cn| vs nwo
end
xlabel('w (rad/s)')
ylabel('angle(cn) (degrees)')
ttle = ['EE341.01: Phase Spectrum with N = ',num2str(N)];
title(ttle);
hold
MATLAB Plots Generated: