how to plot fourier series in matlab
    104 views (last 30 days)
  
       Show older comments
    
 how to plot fourier series in matlab
5 Comments
Answers (6)
  Abraham Boayue
      
 on 18 Mar 2018
        
      Edited: Abraham Boayue
      
 on 15 Jun 2018
  
      
Here is what your Fourirer series would like if my calculations were made correctly. An attachment of the solution is also included for your reference. Take care for now.
clear variables
close all
% Fourier series of neither even nor odd function
% Decompose f(x) into even (fe) and odd (fo) functions.
% fe = (f(x) + f(-x))/2, fo = (f(x) - f(-x))/2
N = 500;
L = 4;
xd = -L:2*L/(N-1):L;
y1 = -1/8*xd.^2;
y2 = 1/8*xd.^2;
fo = y1.*(-L<=xd & xd<=0) +y2.*(0<=xd & xd<=L);
fe = 4-xd.^2/8;
f2 = fe + fo;
a0 = 10/3;
% Generate the fourier series of f(x)
y = zeros(1,N);
x = [];
K = 80;
for k = 1:K
 ck = 1/(pi*k);
 an  = (2*L*(-1).^(k+1))*ck^2;
 bn = L*(-1).^(k+1)*ck  + (2*L*ck^3)*((-1)^k-1);
 y = y + (an*cos(pi*k/L*xd)+ bn*sin(pi*k/L*xd));   % For fe and fo
 x = [x;y];
end
y = a0 +y;
x = a0 +x;
% Color codes
s = distinguishable_colors(K); % search this function on mathworks
figure
subplot(121) % Plot f(t)
plot(xd,f2,'linewidth',2.5,'color',s(1,:))
line(xlim,[0 0],'color',s(6,:),'linewidth',3);
line([0 0],ylim,'color',s(6,:)','linewidth',3);
ylim([-.5 4]);
a= xlabel('\itt\rm (seconds)');
set(a,'fontsize',20);
a = ylabel('\itf\rm(\itt\rm)');
set(a,'fontsize',20);
a= title('f(t)');
set(a,'fontsize',14);
grid
subplot(122) % Plot fouries series of f(t);
hold on
q = length(x(:,1));
M = 1:q;
for i = 1:6:q
plot(xd,x(i,:),'linewidth',2.5,'color',s(i,:),'DisplayName',sprintf('S = %1.2f',M(i)))
end
a= title('Fourier series of f(t)');
set(a,'fontsize',14);
a= xlabel('\itt\rm (seconds)');
set(a,'fontsize',20);
a = ylabel('\itf\rm(\itt\rm)');
set(a,'fontsize',20);
line(xlim,[0 0],'color',s(6,:),'linewidth',3);
line([0 0],ylim,'color',s(6,:)','linewidth',3);
legend('-DynamicLegend','location','bestoutside');
grid
1 Comment
  Korosh Agha Mohammad Ghasemi
 on 22 Sep 2020
				clear all;clc; 
syms x  
pi=3.14; 
sum=0;  
y=exp(x);   %function you want 
a0=(1/pi)*int(y,x,-pi,pi); 
for n=1:3 
        %finding the coefficients 
    an=(1/pi)*int(y*cos(n*x),x,-pi,pi); 
    bn=(1/pi)*int(y*sin(n*x),x,-pi,pi);    
    sum=sum+(an*cos(n*x)+bn*sin(n*x));  
end 
% https://www.instagram.com/koroshkorosh1/
ezplot(x,y,[-pi,pi]); 
grid on;hold on;  
ezplot(x,(sum+a0/2),[-pi,pi]); 
% https://www.instagram.com/koroshkorosh1/
  Abraham Boayue
      
 on 18 Mar 2018
        The is the solution file, the math is a bit messy, but I assume that you are familiar with the material that you are studying.
1 Comment
  Abhishek Ballaney
      
 on 16 Mar 2018
        https://in.mathworks.com/help/curvefit/fourier.html
2 Comments
  Korosh Agha Mohammad Ghasemi
 on 22 Sep 2020
				clear all;clc; 
syms x  
pi=3.14; 
sum=0;  
y=exp(x);   %function you want 
a0=(1/pi)*int(y,x,-pi,pi); 
for n=1:3 
        %finding the coefficients 
    an=(1/pi)*int(y*cos(n*x),x,-pi,pi); 
    bn=(1/pi)*int(y*sin(n*x),x,-pi,pi);    
    sum=sum+(an*cos(n*x)+bn*sin(n*x));  
end 
% https://www.instagram.com/koroshkorosh1/
ezplot(x,y,[-pi,pi]); 
grid on;hold on;  
ezplot(x,(sum+a0/2),[-pi,pi]); 
% https://www.instagram.com/koroshkorosh1/
  vikrant rana
 on 26 Jan 2022
				hey abhishek,
what would be the changes in code if y=(pi-x)/2   
and the limits are from 0 to 2 pi
like i am trying to make changes in the code by substituiting my values i not happening.
i shall be thankful to you if you resolve my doubt.
  Mohamed Abugammar
 on 10 Apr 2019
        clc; 
close all; 
clear all; 
dx=0.001; 
L=pi;
x=(-1+dx:dx:1)*L;
n=length(x); nquart=floor(n/4);
% define the hat function; 
f=0*x; 
f(nquart:2*nquart)=4*(1:nquart+1)/n;
f(2*nquart+1:3*nquart)=1-4*[1:500]/n;
plot(x, f,'r','LineWidth', 2); hold on;
%% define the coffeciet 
A0=sum(f.*ones(size(x)))*dx;
fFS = A0/2;
for k=1:10
Ak=sum(f.*cos(pi*k*x/L))*dx;
Bk=sum(f.*sin(pi*k*x/L))*dx;
fFS=fFS+Ak*cos(pi*k*x/L)+Bk*sin(pi*k*x/L);
plot(x,fFS);
pause(1); drawnow;
end
1 Comment
  Korosh Agha Mohammad Ghasemi
 on 22 Sep 2020
				clear all;clc; 
syms x  
pi=3.14; 
sum=0;  
y=exp(x);   %function you want 
a0=(1/pi)*int(y,x,-pi,pi); 
for n=1:3 
        %finding the coefficients 
    an=(1/pi)*int(y*cos(n*x),x,-pi,pi); 
    bn=(1/pi)*int(y*sin(n*x),x,-pi,pi);    
    sum=sum+(an*cos(n*x)+bn*sin(n*x));  
end 
% https://www.instagram.com/koroshkorosh1/
ezplot(x,y,[-pi,pi]); 
grid on;hold on;  
ezplot(x,(sum+a0/2),[-pi,pi]); 
% https://www.instagram.com/koroshkorosh1/
  Dhiya Eid
 on 20 Jul 2020
        Let f(x) be a 2π-periodic function such that f(x)=x2 for x∈[−π,π]. Find the Fourier series for the parabolic wave.
solve it in matlab
2 Comments
  Korosh Agha Mohammad Ghasemi
 on 22 Sep 2020
        f=@(x)x.*(x>0 & x<-pi)-2*(x/pi+1).*(x>=-pi & x<=-pi/2);
n=50;
k=0:n;
a=1/pi*(integral(@(x)f(x).*cos(k*x),-pi,-pi/2,'ArrayValued',true)+integral(@(x)f(x).*cos(k*x),0,pi/2,'ArrayValued',true));
k=1:n;
b=1/pi*(integral(@(x)f(x).*sin(k*x),-pi,-pi/2,'ArrayValued',true)+integral(@(x)f(x).*sin(k*x),0,pi/2,'ArrayValued',true));
ffun=@(x)a(1)/2+sum(a(2:n+1).*cos((1:n)*x)+b(1:n).*sin((1:n)*x));
x=linspace(0,pi,200);
fx=arrayfun(@(x)ffun(x),x);
plot(x,fx,x,f(x))
% https://www.instagram.com/koroshkorosh1/
3 Comments
  taha bandrawala
 on 22 Sep 2020
				how to write if i want to solve f(x)=x^3 and find the fourier series of f(x)
  Gülcan söm
 on 30 Dec 2020
				how to write if i want to solve f(x)=cos(3x) and find the fourier series of f(x)
See Also
Categories
				Find more on Calculus in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!











