how can I plot the fourier series of this function by calculating the coeffcients and for different n?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Niloufar
am 6 Okt. 2022
Kommentiert: Niloufar
am 6 Okt. 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 Kommentare
Akzeptierte Antwort
Torsten
am 6 Okt. 2022
Bearbeitet: Torsten
am 6 Okt. 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)
Weitere Antworten (1)
Walter Roberson
am 6 Okt. 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 Kommentare
Walter Roberson
am 6 Okt. 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?
Siehe auch
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!