5. 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)
6. 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.
Your Email Here Join this Group!
Post a new Thread
fourier 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<1
y(t)= 0, 1<=t<2
I need to find the fourier series coefficients,ck, with
k=-10,-9,...,9,10
7. 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
______________________________
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 matlab-subscribe@yahoogroups.com )
Re: fourier series coefficients - vishwa - Dec 3 7:52:08 2009
you can try
for k=-10:1:10
c(k+11) = here you enter the Ck equation; % you cant have negative indexing
in
MATLAB
end
Now
c gives you the coefficients
rgds
vishwanath
________________________________
From: Kurt <k...@sbcglobal.net>
To: m...@yahoogroups.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
______________________________
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 matlab-subscribe@yahoogroups.com )
Re: fourier series coefficients - Vaibhav Singh - Dec 4 7:44:25 2009
8. Hey..
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 u
have to define ur function in time domain in 21 samples. Take the fft of
these 21 samples. The resultant is your desired fourier coeff .
Regards-vaibhav
On Thu, Dec 3, 2009 at 5:01 PM, vishwa <v...@yahoo.com> wrote:
> you can try
>
> for k=-10:1:10
> c(k+11) = here you enter the Ck equation; % you cant have negative
indexing
> in MATLAB
> end
>
> Now
>
> c gives you the coefficients
>
> rgds
> vishwanath
>
> ________________________________
> From: Kurt <k...@sbcglobal.net <keg1606%40sbcglobal.net>>
> To: m...@yahoogroups.com <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 Singh
BE(Hons.) Electronics And Instrumentation
BITS-Pilani
9. EE341.01: MATLAB M-FILE FOR PLOTTING TRUNCATED FOURIER SERIES AND ITS SPECTRA
MATLAB M-File example6.m:
%
% 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 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 (odd)
cn = 2/(j*n*wo); % Fourier Series Coefficient
yce = yce + real(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); % plot truncated exponential FS
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 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 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 truncated trigonometric FS
plot(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
10. 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)); % plot |cn| vs nwo
end
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 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);
grid;
hold;
MATLAB Plots Generated:
11.
12. 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
13. Cheers,
Andrew
> a = (1/period)*x(k)*exp(((-j*2*pi)/period)*n(k));
>a
> end
"Raz H" <dilster08@gmail.com> wrote in message <gdrclp$t9b$1@fred.mathworks.com>...
> 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
14. "Andrew" <awbsmith@itee.uq.edu.au> wrote in message <gdrjol$so$1@fred.mathworks.com>...
> 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" <dilster08@gmail.com> wrote in message <gdrclp$t9b$1@fred.mathworks.com>...
> > 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
15. Was this a HW problem? It looks like one to me!
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" <par@ceri.memphis.edu> wrote in message <gdrqap$sl5$1@fred.mathworks.com>...
> "Andrew" <awbsmith@itee.uq.edu.au> wrote in message <gdrjol$so$1@fred.mathworks.com>...
> > 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" <dilster08@gmail.com> wrote in message <gdrclp$t9b$1@fred.mathworks.com>...
> > > 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:
16. >>>
> > > 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!
@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
17. % Define parameters to plot original sawtooth
tr = [-1 0 0 1 1 2 2];
yr = [0 1 0 1 0 1 0];
% Plot Truncated Fourier Series Approximation (N = 1)
N = 1; % define number of terms to use (n = -N..N)
c0 = 0.5; % define dc bias coefficient
t = -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 y
for 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 approximation
plot(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 coefficient
t = -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 y
for 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 approximation
plot(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
18. N = 3; % define number of terms to use (n = -N..N)
c0 = 0.5; % define dc bias coefficient
t = -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 y
for 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 approximation
plot(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 coefficient
t = -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 y
for 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 approximation
plot(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: