Using the fourier series to approximate a triangular wave.

38 次查看(过去 30 天)
I want to approximate a triangular waveform, with the Fourier Series. The triangular waveform has an amplitude of 1 and a frequency of 30 Hz.
and N-values of 1, 5, 10, and 20 number of Fourier terms for approximation.
The only function that I can think of is the sawtooth function. I was wondering if there is a more fitting function for this.

回答(1 个)

Sulaymon Eshkabilov
编辑:Sulaymon Eshkabilov 2023-4-3
Here is one simple code how to generate sawtooth approximation using different Fourier series:
t = linspace(0, 10, 1000);
Phase_shift = pi;
ST = sawtooth(2*pi*t*.5+Phase_shift);
plot(t, ST, 'm', 'LineWidth', 2.5, 'DisplayName', 'SawTooth'), hold on
t = linspace(0, 10, 1000);
N = 1;
FS1 = (2/pi)*sin(pi*t*N);
plot(t,FS1, 'r', 'LineWidth', 2, 'DisplayName','N=1')
N=5;
F=0;
for ii = 1:N
F = F+(-1)^(ii+1)*sin(pi*t*ii)*(1/ii);
FS5 = (2/pi)*F;
end
plot(t,FS5, 'g', 'LineWidth', 2, 'DisplayName','N=5')
hold on
N=10;
F=0;
for ii = 1:N
F = F+(-1)^(ii+1)*sin(pi*t*ii)*(1/ii);
FS10 = (2/pi)*F;
end
plot(t,FS10, 'b', 'LineWidth', 2 , 'DisplayName','N=10')
hold on
N=20;
F=0;
for ii = 1:N
F = F+(-1)^(ii+1)*sin(pi*t*ii)*(1/ii);
FS10 = (2/pi)*F;
end
plot(t,FS10, 'k', 'LineWidth', 1.5, 'DisplayName','N=20')
hold off
legend("show")
xlabel("Time, [s]")
ylabel('x(t)')
grid on
title('Sawtooth Approximation with Fourier Series: N = [1, 5, 10, 20]')
xlim([0, 5.5])
  2 个评论
Walter Roberson
Walter Roberson 2023-4-3
The figure you see in @Sulaymon Eshkabilov Answer is the result of running the posted code inside the Answers facility itself. The figure was not inserted as an image: that is actual R2023a output.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Just for fun 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by