how can I plot the fourier series of this function by calculating the coeffcients and for different n?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Niloufar
el 6 de Oct. de 2022
Comentada: Niloufar
el 6 de Oct. de 2022
I don't want to use loop in my code because the speed is low.this is my code but it doesn't work:
x = linspace(-2*pi, 2*pi, 1000);
a0 = 1/2;
n = 5;
an = zeros(1,n);
for i = 1:n
if mod(4,i)==1
an(1,i) = 2/i*pi;
elseif mod(4,i)==3
an(1,i) = -2/i*pi;
end
end
fs = zeros(1,n+1);
fs(1,1) = a0;
for i = 2:n+1
fs(1,i) = an(1,i)*sin(i*x);
end
plot(x,fs,'color','r');
0 comentarios
Respuesta aceptada
Torsten
el 6 de Oct. de 2022
Editada: Torsten
el 6 de Oct. de 2022
Note that the function f you defined is even - thus it must be cos(n*x), not sin(n*x) that appears in the Fourier series.
x = linspace(-2*pi, 2*pi, 1000).';
a0 = 1/2;
n = 1000;
an = zeros(1,n);
for i = 1:n
if mod(i,4)==1
an(i) = 2/(i*pi);
elseif mod(i,4)==3
an(1,i) = -2/(i*pi);
end
end
f = a0 + sum(an.*cos((1:n).*x),2);
plot(x,f)
Más respuestas (1)
Walter Roberson
el 6 de Oct. de 2022
an = zeros(1,n);
i = 1 : n;
mask = mod(4,i) == 3;
an(1,mask) = -2./i(mask) * pi;
mask = mod(4,i) == 1;
an(1,mask) = +2./i(mask) * pi;
2 comentarios
Walter Roberson
el 6 de Oct. de 2022
However:
n = 8;
i = 1 : n;
mod(4, i)
That is, the remainder when dividing 4 by 1 is 0, the remainder when dividing 4 by 2 is 0, the remainder when dividing 4 by 3 is 1, the remainder when dividing 4 by 4 is 0, the remainder when dividing 4 by 5 through 8 is 4...
Are you sure that is what you want to do?
Ver también
Categorías
Más información sobre Fourier Analysis and Filtering 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!