Fourier Series Example Script

From Class Wiki
Jump to navigation Jump to search

Sampled Fourier Series

This is a script that plots a few terms of the Fourier series of a square wave and then plots some samples of it in red *'s. You can copy this and paste it into your editor and run it from octave or just paste it into an octave window to see the plot.

% This script plots a Fourier Series for a Square Wave
clf;
t=0:.01:10;
T=2.5
M=50    
sum1=0;
for m=1:2:M,
    sum1 = sum1+4/m/pi*sin(m*pi/2)*cos(2*pi*m*t/T);
end
plot(t,sum1,'b-',t(1:10:end),sum1(1:10:end),'r*')
title('Fourier Series Representation of a Square Wave')
xlabel('time (seconds)')
ylabel('Function')
grid on;
axis([0,10,-2,2])
legend('Five Terms','Five Terms Sampled')
print("squarewave.png","-dpng")  % Prints the plot to a png file called squarewave.png

Fourier Series Solution for Sinusoidal Steady State Response of a Low Pass Filter

This goes with the class notes for October 1, 2010.

LowPassFilter.png

clf;
t=0:.01:10;
T=pi;
R=2;
C=1;
M=101;
vin=0;
current =0;
for n=1:2:M,
	vin = vin+1./(n.*pi).*(3.*sin(pi.*n./2)...
-sin(3.*n.*pi./2)).*cos(2.*pi.*n.*t./T);
	current = current+1./(sqrt(R.^2+1./...
((2.*pi.*n./T).^2*C.^2))).*1./(n.*pi).*(3.*sin(pi.*n./2)...
-sin(3.*n.*pi./2)).*cos(2.*pi.*n.*t./T-atan2(-1,2*pi*n/T*R*C));
end
vout=vin-R.*current;
plot(t,vin,'b-',t,vout)
title('Fourier Series Representation of a Square Wave')
xlabel('time (seconds)')
ylabel('Function')
grid on;
axis([0,10,-2,2])
legend('Input Voltage','Output Voltage')
print("LowPass.png","-dpng")  % Prints the plot to a png file called squarewave.png

The output produces a nice plot.

LowPass.png