Plotting Fourier Series Expansion

18 Ansichten (letzte 30 Tage)
Hanif
Hanif am 9 Mär. 2023
Kommentiert: Hanif am 9 Mär. 2023
I was given a problem of the Fourier series expansion of with a periodicity interval . I found that the Fourier series expansion of such function with given periodicity interval is . However, I am new to MATLAB and my knowledge is limited to simple plotting. Suppose that my answer is correct, how to subplot and its Fourier series expansion using loop that generates the n-order of the expansion? I searched in this community and actually find a really good plotting, but I don't understand how it works. Thanks in advance!
  2 Kommentare
Hanif
Hanif am 9 Mär. 2023
Here, I am attaching the complete works on how do I find the Fourier series expansion just in case it would help anyone who want to help me to make the subplot (see in problem 1).
Hanif
Hanif am 9 Mär. 2023
I also want to share my attempt on this:
x = linspace(-10,10,100);
y = 1-(4*cos(x))/pi - (4*cos(3*x))/(9*pi) - (4*cos(5*x))/(25*pi);
plot(x,y,'r-');
Of course, it is very simple because I am new to MATLAB.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Paul
Paul am 9 Mär. 2023
Hi Hanif,
Maybe this will help.
First, the problem statement says that one period spans -1 < x <= 1 (I don't think it matter if using < or <=)
x = linspace(-1,1,100);
Instead of using your problem, let's do something simpler, like 1 - 2*sum(n=1:5,n*x)
fsum = 0*x; % initialize
for n = 1:5
fsum = fsum + n*x;
end
plot(x,1-2*fsum)
I think you can adapt that to your problem. Of course we can't compute an infinite sum, so you'll have to pick an upper bound for the sum over n.
  3 Kommentare
Paul
Paul am 9 Mär. 2023
Bearbeitet: Paul am 9 Mär. 2023
Use plot inside the loop, with hold set to on. Also, the initial value for fsum was incorrect. And still need to define x over the correct interval
% x = linspace(-10,10,100); should be from -1 to 1
% fsum = 4*cos((pi*x)/(pi^2)); % initialize, should be 4*cos(pi*x)/pi^2;
% for n = 2:10
% fsum = fsum + 4*cos((2*n-1)*pi*x)/(pi^2*(2*n-1)^2);
% end
% y = 1-fsum;
% plot(x,y,'r-')
x = linspace(-1,1,100); % changed this line
fsum = 0*x; % initialize
figure;
hold on;
for n = 1:10 % start loop at 1
fsum = fsum + 4*cos((2*n-1)*pi*x)/(pi^2*(2*n-1)^2);
plot(x,1-fsum)
end
The sum seems like it's biased up by 0.5. Also, as your code showed, the reconstruction is not periodic with period = 2. Recheck derivation?
Hanif
Hanif am 9 Mär. 2023
I see. I actually tried to put the plot function into the loop, but it did not work because I forgot to put the hold-on command. As you also mentioned, I haven't check my derivation again, but I will do! Thank you for your helps, Paul.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by