Need to solve Fourier Series script
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
NANDEESWARAN
el 18 de Nov. de 2023
Comentada: NANDEESWARAN
el 18 de Nov. de 2023
clear all;clc;
x = 0:0.01:1;
for i = 1: size(x,2)
y(i) = exact(x(i));
f(i) = fourier(x(i),3);
g(i) = fourier(x(i),6);
end
function func = phi(x,n)
func = cos(pi * (n - 1/2) * x);
end
function coef = c(n)
beta = pi * (2 * n - 1);
coef = 8 * (cos(beta / 4) - cos(beta / 2)) / beta^2;
end
function f = fourier(x,N)
f = 0;
for n = 1: N
f = f + c(n) * phi(x,n);
end
end
function f = exact(x)
if x < 1/2
f = 1/2;
else
f = 1 - x;
end
end
plot(x,y,'-','LineWidth',5,x,f,'--','LineWidth',5,x,g,'-','LineWidth',5);
legend('Exact','Fourier (3 terms)','Fourier (6 terms)');
0 comentarios
Respuesta aceptada
madhan ravi
el 18 de Nov. de 2023
plot(x,y,'-',x,f,'--',x,g,'-','LineWidth',5);
legend('Exact','Fourier (3 terms)','Fourier (6 terms)'); % use this line before function
2 comentarios
Más respuestas (1)
VBBV
el 18 de Nov. de 2023
if you have the entire code in one script file, then you can put all the functions after the plot function call as below otherwise,if you have them in separate function files, you can just call plot function as below
clear all;clc;
x = 0:0.01:1;
for i = 1: size(x,2)
y(i) = exact(x(i));
f(i) = fourier(x(i),3);
g(i) = fourier(x(i),6);
end
hold on
plot(x,y,'-','LineWidth',2)
plot(x,f,'--','LineWidth',2)
plot(x,g,'-','LineWidth',2);
legend('Exact','Fourier (3 terms)','Fourier (6 terms)');
function f = exact(x)
if x < 1/2
f = 1/2;
else
f = 1 - x;
end
end
function f = fourier(x,N)
f = 0;
for n = 1: N
f = f + c(n) * phi(x,n);
end
end
function func = phi(x,n)
func = cos(pi * (n - 1/2) * x);
end
function coef = c(n)
beta = pi * (2 * n - 1);
coef = 8 * (cos(beta / 4) - cos(beta / 2)) / beta^2;
end
Ver también
Categorías
Más información sobre Discrete Fourier and Cosine Transforms en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!