21
Fourier Series Example MATLAB Code % ***** MATLAB Code Starts Here ***** % %FOURIER_SERIES_01_MAT % fig_size = [232 84 774 624]; x = [0.1 0.9 0.1]; % 1 period of x(t) x = [x x x x]; % 4 periods of x(t) tx = [-2 -1 0 0 1 2 2 3 4 4 5 6]; % time points for x(t) figure(1),plot(tx,x),grid,xlabel('Time (s)'),ylabel('Amplitude'),... title('Periodic Signal x(t)'),axis([-2 6 0 1]),... set(gcf,'Position',fig_size) % a0 = 0.5; % DC component of Fourier Series ph0 = 0; n = [1 3 5 7 9]; % Values of n to be evaluated an = -3.2 ./ (pi * n).^2; % Fourier Series coefficients mag_an = abs(an); ph_an = -180 * ones(1,length(n)); % n = [0 n]; mag_an = [a0 mag_an]; % Including a0 with a_n ph_an = [ph0 ph_an];

Fourier series example

  • Upload
    finnia

  • View
    6.718

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Fourier series example

Fourier Series Example

MATLAB Code

% ***** MATLAB Code Starts Here *****%

%FOURIER_SERIES_01_MAT

%

fig_size = [232 84 774 624];

x = [0.1 0.9 0.1]; % 1 period of x(t)

x = [x x x x]; % 4 periods of x(t)

tx = [-2 -1 0 0 1 2 2 3 4 4 5 6]; % time points for x(t)

figure(1),plot(tx,x),grid,xlabel('Time (s)'),ylabel('Amplitude'),...

title('Periodic Signal x(t)'),axis([-2 6 0 1]),...

set(gcf,'Position',fig_size)

%

a0 = 0.5; % DC component of Fourier Series

ph0 = 0;

n = [1 3 5 7 9]; % Values of n to be evaluated

an = -3.2 ./ (pi * n).^2; % Fourier Series coefficients

mag_an = abs(an);

ph_an = -180 * ones(1,length(n));

%

n = [0 n];

mag_an = [a0 mag_an]; % Including a0 with a_n

ph_an = [ph0 ph_an];

%

figure(2),clf,subplot(211),plot(n,mag_an,'o'),grid,xlabel('Harmonic Number'),...

Page 2: Fourier series example

ylabel('Magnitude'),title('Fourier Series Magnitude'),axis([0 10 0 0.6]),...

set(gcf,'Position',fig_size)

%

subplot(212),plot(n,ph_an,'o'),grid,xlabel('Harmonic Number'),...

ylabel('Phase (deg)'),title('Fourier Series Phase'),axis([0 10 -200 0]),...

set(gcf,'Position',fig_size)

%

w0 = pi; % Fundamental Frequency

t = [-2:0.002:6]; % time vector for approximations

%

x1 = 0; % approximation with DC + 1 term

for i = 1:2

x1 = x1 + mag_an(i)*cos(n(i)*w0*t + ph_an(i)*pi/180);

end

%

x2 = x1; % approximation with DC + 2 terms

i = 3;

x2 = x2 + mag_an(i)*cos(n(i)*w0*t + ph_an(i)*pi/180);

%

x3 = x2; % approximation with DC + 3 terms

i = 4;

x3 = x3 + mag_an(i)*cos(n(i)*w0*t + ph_an(i)*pi/180);

%

x4 = x3; % approximation with DC + 5 terms

for i = 5:6

x4 = x4 + mag_an(i)*cos(n(i)*w0*t + ph_an(i)*pi/180);

end

Page 3: Fourier series example

%

figure(3),subplot(221),plot(t,x1),grid,xlabel('Time (s)'),...

ylabel('Amplitude'),title('DC + 1 Term'),axis([-2 6 0 1]),...

subplot(222),plot(t,x2),grid,xlabel('Time (s)'),...

ylabel('Amplitude'),title('DC + 2 Terms'),axis([-2 6 0 1]),...

subplot(223),plot(t,x3),grid,xlabel('Time (s)'),...

ylabel('Amplitude'),title('DC + 3 Terms'),axis([-2 6 0 1]),...

subplot(224),plot(t,x4),grid,xlabel('Time (s)'),...

ylabel('Amplitude'),title('DC + 5 Terms'),axis([-2 6 0 1]),...

set(gcf,'Position',fig_size)

%

%% ***** MATLAB Code Stops Here *****

Fourier Series Example #2

MATLAB Code

% ***** MATLAB Code Starts Here *****%

%FOURIER_SERIES_02_MAT

%

fig_size = [232 84 774 624];

T0 = 8;

w0 = 2*pi/8;

t = linspace(-8,16,1001);

a0 = 0.25;

n = 1:50;

Page 4: Fourier series example

an = (1./(pi*n)) .* sin(n*pi/2);

bn = (1./(pi*n)) .* (1 - cos(n*pi/2));

x1 = a0;

for i = 1:10

x1 = x1 + an(i)*cos(i*w0*t) + bn(i)*sin(i*w0*t);

end

x2 = x1;

for i = 11:30

x2 = x2 + an(i)*cos(i*w0*t) + bn(i)*sin(i*w0*t);

end

x3 = x2;

for i = 31:50

x3 = x3 + an(i)*cos(i*w0*t) + bn(i)*sin(i*w0*t);

end

A0 = a0;

An = sqrt(an.^2 + bn.^2);

thn = atan2(-bn,an)*180/pi;

X0 = A0;

Xn = An/2;

figure(1),clf,plot([-8 -6],[1 1],'b-',[-6 -6],[1 0],'b--',[-6 0],[0 0],'b-',[0 2],[1 1],'b-',[2 8],[0 0],'b-',...

[8 10],[1 1],'b-',[10 16],[0 0],'b-',[0 0],[0 1],'b--',[2 2],[1 0],'b--',[8 8],[0 1],'b--',...

[10 10],[1 0],'b--',[16 16],[0 1],'b--'),...

axis([-8 16 -.5 1.5]),plotax,xlabel('Time (s)'),ylabel('Amplitude'),title('Periodic Pulse Train x(t)'),...

set(gcf,'Position',fig_size),text(5,-0.2,'T_0 = 8 s'),text(5,-0.3,'Pulse width = T_0/4')

figure(2),clf,subplot(311),plot(t,x1),subplot(312),plot(t,x2),subplot(313),plot(t,x3),...

Page 5: Fourier series example

subplot(311),ylabel('Amplitude'),title('Fourier Series Representation of x(t) with 10 Terms'),...

subplot(312),ylabel('Amplitude'),title('Fourier Series Representation of x(t) with 30 Terms'),...

subplot(313),ylabel('Amplitude'),title('Fourier Series Representation of x(t) with 50 Terms'),xlabel('Time (s)'),...

for i = 1:3,subplot(3,1,i),...

hold on,plot([0 2],[1 1],'r-',[2 8],[0 0],'r-',[8 10],[1 1],'r-',[10 16],[0 0],'r-',...

[0 0],[0 1],'r--',[2 2],[1 0],'r--',[8 8],[0 1],'r--',[10 10],[1 0],'r--',[16 16],[0 1],'r--',...

[-8 -6],[1 1],'r-',[-6 -6],[1 0],'r--',[-6 0],[0 0],'r-'),hold off,...

axis([-8 16 -0.5 1.5]),plotax

end

set(gcf,'Position',fig_size)

figure(3),clf,subplot(211),plot(0,a0,'ro',n,an,'o'),axis([-5 50 -0.2 0.5]),plotax,...

hold on,plot([10.5 10.5],[-0.2 0.5],'r--',[30.5 30.5],[-0.2 0.5],'r--'),hold off,...

xlabel('Harmonic Number'),ylabel('Amplitude'),title('Trig Fourier Series Coefficients a_n for x(t)'),...

subplot(212),plot(n,bn,'o'),axis([-5 50 -0.05 0.35]),plotax,...

hold on,plot([10.5 10.5],[-0.05 0.35],'r--',[30.5 30.5],[-0.05 0.35],'r--'),hold off,...

xlabel('Harmonic Number'),ylabel('Amplitude'),title('Trig Fourier Series Coefficients b_n for x(t)'),...

set(gcf,'Position',fig_size)

figure(4),clf,subplot(211),plot(0,A0,'ro',n*w0,An,'o'),axis([-2*w0 16 -0.1 0.5]),plotax,...

xlabel('Frequency (r/s)'),ylabel('Magnitde'),title('Cosine Fourier Series Magnitudes A_n for x(t)'),...

subplot(212),plot(n*w0,thn,'o'),v=axis;axis([-2*w0 16 -200 10]),plotax,...

xlabel('Frequency (r/s)'),ylabel('Phase (deg)'),title('Cosine Fourier Series Phases Theta_n for x(t)'),...

set(gcf,'Position',fig_size)

Page 6: Fourier series example

figure(5),clf,subplot(211),plot(0,X0,'ro',n*w0,Xn,'o',-n*w0,Xn,'o'),axis([-16 16 -0.1 0.3]),plotax,...

xlabel('Frequency (r/s)'),ylabel('Magnitde'),title('Exponential Fourier Series Magnitudes X_n for x(t)'),...

subplot(212),plot(n*w0,thn,'o',-n*w0,-thn,'o'),v=axis;axis([-16 16 v(3:4)]),plotax,...

xlabel('Frequency (r/s)'),ylabel('Phase (deg)'),title('Exponential Fourier Series Phases Theta_n for x(t)'),...

set(gcf,'Position',fig_size)

clear i v

%

Technical discussion about Matlab and issues related to Digital Signal Processing.

  

Post a new Threadfourier series coefficients - Kurt - Dec 1 12:27:01 2009

hello all,I have a one period square wave on the interval[0,2] defined as: y(t)= 1, 0<=t<1y(t)= 0, 1<=t<2I need to find the fourier series coefficients,ck, with k=-10,-9,...,9,10I heard using a for loop would work but I am completely stuck on how to move

Your Email Here Join this Group! matlab

Page 7: Fourier series example

through this problem.All help is greatly appreciated,Kurt______________________________New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.

(You need to be a member of matlab -- send a blank email to [email protected] )

Re: fourier series coefficients - vishwa - Dec 3 7:52:08 2009

you can try

for k=-10:1:10c(k+11) = here you enter the Ck equation; % you cant have negative indexing inMATLABend Now c gives you the coefficients

rgdsvishwanath

________________________________From: Kurt <[email protected]>To: [email protected]: Tue, 1 December, 2009 12:50:19 PMSubject: [matlab] fourier series coefficients

  hello all,I have a one period square wave on the interval[0,2] defined as: y(t)= 1, 0<=t<1y(t)= 0, 1<=t<2I need to find the fourier series coefficients, ck, with k=-10,-9,... ,9,10I heard using a for loop would work but I am completely stuck on how to movethrough this problem.All help is greatly appreciated,Kurt

______________________________New Code Sharing Section now Live on DSPRelated.com. Learn about the Reward Program for Contributors here.

(You need to be a member of matlab -- send a blank email to [email protected] )

Re: fourier series coefficients - Vaibhav Singh - Dec 4 7:44:25 2009

Hey..

Page 8: Fourier series example

For fourier coeff u have to find the fft of the given sequence using matlab.Since u have to find the coeff for kranging from -10:1:10, i.e.21 points uhave to define ur function in time domain in 21 samples. Take the fft ofthese 21 samples. The resultant is your desired fourier coeff .

Regards-vaibhav

On Thu, Dec 3, 2009 at 5:01 PM, vishwa <[email protected]> wrote:

> you can try>> for k=-10:1:10> c(k+11) = here you enter the Ck equation; % you cant have negativeindexing> in MATLAB> end>> Now>> c gives you the coefficients>> rgds> vishwanath>> ________________________________> From: Kurt <[email protected] <keg1606%40sbcglobal.net>>> To: [email protected] <matlab%40yahoogroups.com>> Sent: Tue, 1 December, 2009 12:50:19 PM> Subject: [matlab] fourier series coefficients>> hello all,> I have a one period square wave on the interval[0,2] defined as:> y(t)= 1, 0<=t<1> y(t)= 0, 1<=t<2> I need to find the fourier series coefficients, ck, with> k=-10,-9,... ,9,10> I heard using a for loop would work but I am completely stuck on how to> move through this problem.> All help is greatly appreciated,> Kurt>> >

-- Vaibhav SinghBE(Hons.) Electronics And InstrumentationBITS-Pilani

EE341.01: MATLAB M-FILE FOR PLOTTING TRUNCATED FOURIER SERIES AND ITS SPECTRAMATLAB M-File example6.m:

Page 9: Fourier series example

%% Filename: example6.m%% Description: This M-file plots the truncated Fourier Series% representation of a square wave as well as its % amplitude and phase spectrum.

clear; % clear all variablesclf; % clear all figures

N = 11; % summation limit (use N odd)wo = pi; % fundamental frequency (rad/s)c0 = 0; % dc biast = -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 (odd) cn = 2/(j*n*wo); % Fourier Series Coefficient yce = yce + real(cn*exp(j*n*wo*t)); % Fourier Series computationend

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); % plot truncated exponential FSxlabel('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 yt to c0

for n = 1:2:N, % loop over series index n (odd) cn = 2/(j*n*wo); % Fourier Series Coefficient yt = yt + 2*abs(cn)*cos(n*wo*t+angle(cn)); % Fourier Series computationend

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 truncated trigonometric FSplot(t,yt);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

Page 10: Fourier series example

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 nwoendfor n = -N+1:2:N-1, % loop over even series index n cn = 0; % Fourier Series Coefficient stem(n*wo,abs(cn)); % plot |cn| vs nwoend

xlabel('w (rad/s)')ylabel('|cn|')ttle = ['EE341.01: Amplitude Spectrum with N = ',num2str(N)];title(ttle); grid;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 nwoendfor 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 nwoend

xlabel('w (rad/s)')ylabel('angle(cn) (degrees)')ttle = ['EE341.01: Phase Spectrum with N = ',num2str(N)];title(ttle);grid;hold;

MATLAB Plots Generated:

Page 11: Fourier series example
Page 12: Fourier series example

Hi,

I am trying to write a function to generate Fourier series Coefficients of a given discrete time signal. For instance:

x = [1 2 3 4]

n = [0 1 2 3]

where x holds the values of the signal, and n holds the corresponding time indices.

My code for the function is:

function a = dtfs(x,n)

period = length(x);

for k = 1:period

    a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

    a

end

i am just not getting the correct values for the fourier series coefficients. Am I setting up the formula wrong?

As you can probably tell, i am very very new to MATLAB and I'd also appreciate if someone may guide me in setting up my

"for-loop" with a vector to "catch" and store values of "a", so each time the for-loop repeats, the previous value a does not get

over-written, instead they are all stored in a vector.

Thanks in advance :)

Regards

Subject: Fourier Series Coefficients

From: Andrew

Date: 24 Oct, 2008 04:43:01

Message: 2 of 4

Reply to this message

Add author to My Watch List

View original format

Flag as spam

I'm guessing the formula, but hopefully the structure of it will help...

function a = dtfs(x,n)

period = length(x);

a = zeros(1, length(x))

for k = 1:period

    for z = 1:period

        a(k) = a(k) + x(z) * exp((-j*2*pi)/period * (k-1) * n(z));

    end

    a(k) = a(k) / period;

    num2str(a(k), '%1.18f');

end

Page 13: Fourier series example

Cheers,

Andrew

> a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> a

> end

"Raz H" <[email protected]> wrote in message <[email protected]>...

> Hi,

>

> I am trying to write a function to generate Fourier series Coefficients of a given discrete time signal. For instance:

>

> x = [1 2 3 4]

> n = [0 1 2 3]

>

> where x holds the values of the signal, and n holds the corresponding time indices.

>

> My code for the function is:

>

> function a = dtfs(x,n)

> period = length(x);

> for k = 1:period

> a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> a

> end

>

> i am just not getting the correct values for the fourier series coefficients. Am I setting up the formula wrong?

>

> As you can probably tell, i am very very new to MATLAB and I'd also appreciate if someone may guide me in setting up my

"for-loop" with a vector to "catch" and store values of "a", so each time the for-loop repeats, the previous value a does not get

over-written, instead they are all stored in a vector.

>

> Thanks in advance :)

>

> Regards

Subject: Fourier Series Coefficients

From: Paul

Date: 24 Oct, 2008 06:35:05

Message: 3 of 4

Reply to this message

Add author to My Watch List

View original format

Flag as spam

"Andrew" <[email protected]> wrote in message <[email protected]>...

Page 14: Fourier series example

> I'm guessing the formula, but hopefully the structure of it will help...

>

> function a = dtfs(x,n)

> period = length(x);

> a = zeros(1, length(x))

> for k = 1:period

> for z = 1:period

> a(k) = a(k) + x(z) * exp((-j*2*pi)/period * (k-1) * n(z));

> end

> a(k) = a(k) / period;

> num2str(a(k), '%1.18f');

> end

>

> Cheers,

> Andrew

>

>

> > a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> > a

> > end

>

>

>

>

> "Raz H" <[email protected]> wrote in message <[email protected]>...

> > Hi,

> >

> > I am trying to write a function to generate Fourier series Coefficients of a given discrete time signal. For instance:

> >

> > x = [1 2 3 4]

> > n = [0 1 2 3]

> >

> > where x holds the values of the signal, and n holds the corresponding time indices.

> >

> > My code for the function is:

> >

> > function a = dtfs(x,n)

> > period = length(x);

> > for k = 1:period

> > a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> > a

> > end

> >

> > i am just not getting the correct values for the fourier series coefficients. Am I setting up the formula wrong?

> >

> > As you can probably tell, i am very very new to MATLAB and I'd also appreciate if someone may guide me in setting up

my "for-loop" with a vector to "catch" and store values of "a", so each time the for-loop repeats, the previous value a does not

get over-written, instead they are all stored in a vector.

> >

> > Thanks in advance :)

> >

> > Regards

Was this a HW problem? It looks like one to me!

Page 15: Fourier series example

Subject: Fourier Series Coefficients

From: Raz H

Date: 24 Oct, 2008 06:54:02

Message: 4 of 4

Reply to this message

Add author to My Watch List

View original format

Flag as spam

"Paul" <[email protected]> wrote in message <[email protected]>...

> "Andrew" <[email protected]> wrote in message <[email protected]>...

> > I'm guessing the formula, but hopefully the structure of it will help...

> >

> > function a = dtfs(x,n)

> > period = length(x);

> > a = zeros(1, length(x))

> > for k = 1:period

> > for z = 1:period

> > a(k) = a(k) + x(z) * exp((-j*2*pi)/period * (k-1) * n(z));

> > end

> > a(k) = a(k) / period;

> > num2str(a(k), '%1.18f');

> > end

> >

> > Cheers,

> > Andrew

> >

> >

> > > a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> > > a

> > > end

> >

> >

> >

> >

> > "Raz H" <[email protected]> wrote in message <[email protected]>...

> > > Hi,

> > >

> > > I am trying to write a function to generate Fourier series Coefficients of a given discrete time signal. For instance:

> > >

> > > x = [1 2 3 4]

> > > n = [0 1 2 3]

> > >

> > > where x holds the values of the signal, and n holds the corresponding time indices.

> > >

> > > My code for the function is:

> > >

> > > function a = dtfs(x,n)

> > > period = length(x);

> > > for k = 1:period

Page 16: Fourier series example

> > > a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));

> > > a

> > > end

> > >

> > > i am just not getting the correct values for the fourier series coefficients. Am I setting up the formula wrong?

> > >

> > > As you can probably tell, i am very very new to MATLAB and I'd also appreciate if someone may guide me in setting up

my "for-loop" with a vector to "catch" and store values of "a", so each time the for-loop repeats, the previous value a does not

get over-written, instead they are all stored in a vector.

> > >

> > > Thanks in advance :)

> > >

> > > Regards

>

> Was this a HW problem? It looks like one to me!

@Andrew

Thank you very much! I guess my loop was not set up correctly, plus I was not signifying the time indices correctly.

@Paul

This was not a homework problem, though I'll be taking Signals soon, so I am trying to become familiar with MATLAB.

Thanks to all who replied! :)

EE341.01: MATLAB M-FILE FOR PLOTTING TRUNCATED FOURIER SERIES

This example shows a MATLAB M-file for plotting a truncated Fourier Series. Various numbers of terms are used.

MATLAB M-File example5.m:

% % Filename: example5.m%% Description: Example to show how the truncated Fourier series in % complex exponential form approximates the real % signal. More and more terms are taken showing a% better and better representation of the original signal.%

clear; % clear all variables clf; % clear all figures

% Define parameters to plot original sawtooth

tr = [-1 0 0 1 1 2 2];yr = [0 1 0 1 0 1 0];

Page 17: Fourier series example

% Plot Truncated Fourier Series Approximation (N = 1)

N = 1; % define number of terms to use (n = -N..N)c0 = 0.5; % define dc bias coefficientt = -1:0.001:2; % define time values for y(t)y = c0 * ones(size(t)); % let initial y = c0 (dc bias) for all times

for n = -N:-1, % compute y for negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end; % compute y for positive n and add to yfor n = 1:N, % found using negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end;

subplot(2,2,1); % plot approximationplot(t,y); hold;plot(tr,yr,':'); hold;xlabel('time (seconds)');ylabel('y(t) approximation');title('EE341.01: Truncated FS, -1<=n<=1');

% Plot Truncated Fourier Series Approximation (N = 2)

clear; % clear all variables N = 2; % define number of terms to use (n = -N..N)c0 = 0.5; % define dc bias coefficientt = -1:0.001:2; % define time values for y(t)y = c0 * ones(size(t)); % let initial y = c0 (dc bias) for all times

for n = -N:-1, % compute y for negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end; % compute y for positive n and add to yfor n = 1:N, % found using negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end;

subplot(2,2,2); % plot approximationplot(t,y);hold;plot(tr,yr,':');hold;xlabel('time (seconds)');ylabel('y(t) approximation');title('EE341.01: Truncated FS, -2<=n<=2');

% Plot Truncated Fourier Series Approximation (N = 3)

clear; % clear all variables N = 3; % define number of terms to use (n = -N..N)c0 = 0.5; % define dc bias coefficientt = -1:0.001:2; % define time values for y(t)y = c0 * ones(size(t)); % let initial y = c0 (dc bias) for all times

Page 18: Fourier series example

for n = -N:-1, % compute y for negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end; % compute y for positive n and add to yfor n = 1:N, % found using negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end;

subplot(2,2,3); % plot approximationplot(t,y);hold;plot(tr,yr,':');hold;xlabel('time (seconds)');ylabel('y(t) approximation');title('EE341.01: Truncated FS, -3<=n<=3');

% Plot Truncated Fourier Series Approximation (N = 10)

clear; % clear all variables N = 10; % define number of terms to use (n = -N..N)c0 = 0.5; % define dc bias coefficientt = -1:0.001:2; % define time values for y(t)y = c0 * ones(size(t)); % let initial y = c0 (dc bias) for all times

for n = -N:-1, % compute y for negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end; % compute y for positive n and add to yfor n = 1:N, % found using negative n cn = exp(j*pi/2)/(2*pi*n); y = y + real(cn * exp(j*n*2*pi*t));end;

subplot(2,2,4); % plot approximationplot(t,y);hold;plot(tr,yr,':');hold;xlabel('time (seconds)');ylabel('y(t) approximation');title('EE341.01: Truncated FS, -10<=n<=10');

MATLAB Plot Generated:

Page 19: Fourier series example