文章目录
- 前言
- 一、MATLAB代码
- 二、仿真结果画图
- 三、吉布斯效应
前言
本文使用MATLAB仿真的方法,给出从正弦波转换为方波的过程,说明方波的傅里叶级数展开式是如何由奇次谐波的和构成的。另外,说明了在此过程中的吉布斯效应。
一、MATLAB代码
以下给出的MATLAB代码,说明方波的傅里叶级数展开式是如何由奇次谐波的和构成的。
% 基波
f = 1; % 基频,单位Hz
fs = 300; % 采样率,单位samples/s
Ts = 1/fs; % 采样间隔
T = 1; % 时长
t = 0:Ts:T; % 时间向量
y = sin(2*pi*f*t); % 基波figure()
subplot(221)
plot(t,y);
grid on
title('基波(f=1Hz)')% 基波加3次谐波的和信号
f3 = 3*f;
y = sin(2*pi*f*t) + sin(2*pi*f3*t)/3;% figure()
subplot(222)
plot(t,y);
grid on
title('基波+3次谐波')% 基波加第3、5、7、9次谐波的和信号
f5 = 5*f;
f7 = 7*f;
f9 = 9*f;
y = sin(2*pi*f*t) + sin(2*pi*f3*t)/3 + ...sin(2*pi*f5*t)/5 + sin(2*pi*f7*t)/7 + ...sin(2*pi*f9*t)/9;% figure()
subplot(223)
plot(t,y);
grid on
title('基波+3+5+7+9次谐波')% 在基波上叠加更多高次谐波分量,一直到第19次谐波
% 此时,和信号更接近方波。实际上即使增加更多的高次谐波分量,和信号也不会变成理想的方波,这就是吉布斯效应。
y = zeros(10,length(t));
x = zeros(size(t));
for k = 1:2:19fk = k*f;x = x + sin(2*pi*fk*t)/(2*pi*k);y((k+1)/2,:) = x;
end% figure()
subplot(224)
plot(t,y);
grid on
title('方波的构建:吉布斯效应')% 绘制三维网格图,展示正弦波到方波的渐变过程。
figure()
mesh(y);
title('方波的构建')
二、仿真结果画图
基波加奇次谐波逼近方波的时域波形图:
三维网格图:
三、吉布斯效应
在基波上叠加更多高次谐波分量时,和信号将更接近方波。实际上,即使增加更多的高次谐波分量,和信号也不会变成理想的方波,这就是吉布斯效应。