合工大2021信号与系统实验 matlab部分

实验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
  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值