um = 1; % 三角波幅度
T = 2; % 三角波周期
% 构造三角波信号
t = linspace(0, T, 1000);
tri_wave = um * (2/pi) * asin(sin(2*pi/T*t));
% 绘制三角波信号图像
subplot(2,1,1)
plot(t, tri_wave)
title('三角波信号')
xlabel('时间')
ylabel('幅值')
% 计算傅里叶级数展开式
N = 20; % 级数展开项数
a0 = 0;
an = zeros(1,N);
bn = zeros(1,N);
for n = 1:N
an(n) = 0;
bn(n) = (4*um/(n*pi))*((-1)^n-1);
end
% 构造三角波信号的级数展开式
tri_wave_expansion = a0/2;
for n = 1:N
tri_wave_expansion = tri_wave_expansion + an(n)*cos(2*pi*n/T*t) + bn(n)*sin(2*pi*n/T*t);
end
% 绘制三角波信号的级数展开式图像
subplot(2,1,2)
plot(t, tri_wave_expansion)
title('三角波信号的级数展开式')
xlabel('时间')
ylabel('幅值')
% 比较三角波信号和级数展开式的图像
figure
plot(t, tri_wave, t, tri_wave_expansion)
legend('三角波信号', '级数展开式')
title('三角波信号和级数展开式的比较')
xlabel('时间')
ylabel('幅值')
% 分析特点
% 三角波信号可以用傅里叶级数展开式表示,展开式中包含了多个正弦函数的叠加,随着级数项数的增加,展开式逐渐逼近原始信号。