实验1,波形的叠加
实验内容:
1、利用正弦波序列构造周期矩形脉冲,观察吉布斯现象;
2、观察理解幅度失真和相位失真
3、计算周期矩形脉冲通过RC低通滤波器后的波形。
以下为matlab代码:
clear all;
t=-0.5:0.001:7;
%以下是第一个实验的前三张图,演示k等于不同值时的合成情况
%图1
rectwave=zeros(size(t));
for k=0:100
rectwave=rectwave+sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;%之前的计算都只算了累加部分,没有算系数,在此处最终取2/Π并加1/2,可简化运算
subplot(3,1,1);
plot(t,rectwave);
title({'HFUT Signal&System2021 Exp-1.1';'k=100'},'FontSize',16);
%图2
rectwave=zeros(size(t));
for k=0:20
rectwave=rectwave+sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(3,1,2);
plot(t,rectwave);
title('k=20','FontSize',16);
%图3
rectwave=zeros(size(t));
for k=0:3
rectwave=rectwave+sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(3,1,3);
plot(t,rectwave);
title('k=3','FontSize',16);
%开始画第一个实验的4、5张图,演示全部元素减半与只有三次谐波减半时的情况
figure(2);
%图4,全部元素变为原来的二分之一
rectwave=zeros(size(t));
for k=0:500
rectwave=rectwave+0.5*sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(2,1,1);
plot(t,rectwave);
title({'HFUT Signal&System2021 Exp-1.2';'k=500,HalfSized All'},'FontSize',24);
%图5,只有三次谐波减半
rectwave=zeros(size(t));
rectwave=0.5*sin(3*t)/3
for k=1:500
rectwave=rectwave+sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(2,1,2);
plot(t,rectwave);
title('k=500,Only HalfSized in k=1','FontSize',24);
%以下是第一个实验的6、7张图,演示了全部相移与只有三次谐波相移的情景
figure(3);
%图6,相移全部
rectwave=zeros(size(t));
for k=0:500
rectwave=rectwave+sin((2*k+1)*t+(2*k+1)*pi/3)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(2,1,1);
plot(t,rectwave);
title({'HFUT Signal&System2021 Exp-1.3';'k=500,Phase Shift All'},'FontSize',24);
%图7,只相移三次谐波
rectwave=zeros(size(t));
rectwave=sin(3*t+pi)/3
for k=1:500
rectwave=rectwave+sin((2*k+1)*t)/(2*k+1);
end;
rectwave=0.5+(2/pi)*rectwave;
subplot(2,1,2);
plot(t,rectwave);
title('k=500,Only Phase Shift in k=1','FontSize',24);
%以下是第一个实验的最后4张图,演示了波形通过RC滤波器时的变化
%不同的RC值,不同的滤波器
figure(4);
clear all;
t=-0.5:0.001:7;
rc=0.1;
rectRC1=zeros(size(t));
for k=0:500
b=2*k+1
rectRC1=rectRC1+(sin(t*b-atan(rc*b))/sqrt(1+(rc*b)^2))/b;
end
rectRC1=0.5+(2/pi)*rectRC1;
rc=0.3;
rectRC2=zeros(size(t));
for k=0:500
b=2*k+1
rectRC2=rectRC2+(sin(t*b-atan(rc*b))/sqrt(1+(rc*b)^2))/b;
end