通信原理Matlab仿真实验报告 下载本文

内容发布更新时间 : 2024/4/28 4:50:28星期一 下面是文章的全部内容请认真阅读。

通信原理Matlab仿真

学号:姓名:实验报告

实验一

1、利用Matlab实现矩形信号串信号分解与合成 ⑴ Matlab程序代码:

①矩形信号串信号分解与合成函数rectexpd(): function rectexpd(T1,T0,m) %矩形信号串信号分解与合成 %T1:矩信号区间为(-T1/2,T1/2) %T0:矩形矩信信号串周期 %m:傅里叶级数展开项次数 t1=-T1/2:0.01:T1/2;t2=T1/2:0.01:(T0-T1/2); t=[(t1-T0)';(t2-T0)';t1';t2';(t1+T0)']; n1=length(t1);n2=length(t2); %根据周期矩形信号函数周期,计算点数 f=[ones(n1,1);zeros(n2,1);ones(n1,1);zeros(n2,1);ones(n1,1)]; %构造周期矩形信号串 y=zeros(m+1,length(t));y(m+1,:)=f'; figure(1); plot(t,y(m+1,:)); %绘制周期矩形信号串 axis([-(T0+T1/2)-0.5,(T0+T1/2)+0.5,0,1.2]); set(gca,'XTick',[-T0,-T1/2,T1/2,T0]); set(gca,'XTickLabel',{'-T0','-T1/2','T1/2','T0'}); title('矩形信号串');grid on; ②在命令窗口调用rectexpd()函数: T1=5; T0=10; m=5;

rectexpd(T1,T0,m) ⑵Matlab仿真结果: 矩形信号串10.80.60.40.20-T0-T1/2T1/2T0

a=T1/T0; pause; %绘制离散幅度谱 freq=[-20:1:20];mag=abs(a*sinc(a*freq)); stem(freq,mag); x=a*ones(size(t)); for k=1:m %循环显示谐波叠加图形 pause; x=x+2*a*sinc(a*k)*cos(2*pi*t*k/T0); y(k,:)=x; plot(t,y(m+1,:));hold on; plot(t,y(k,:));hold off;grid on; axis([-(T0+T1/2)-0.5,[T0+T1/2]+0.5,-0.5,1.5]); title(strcat(num2str(k),'次谐波叠加')); xlabel('t');end pause; plot(t,y(1:m+1,:));grid on; axis([-T0/2,T0/2,-0.5,1.5]); title('各次谐波叠加');xlabel('t');

0.50.450.40.350.30.250.20.150.10.050-20-15-10-505101520

1次谐波叠加1.52次谐波叠加1.5110.50.500-0.5-10-50t510-0.5-10-50t5103次谐波叠加1.54次谐波叠加1.5110.50.500-0.5-10-50t510-0.5-10-5

1.50t510

5次谐波叠加1.5各次谐波叠加110.50.500-0.5-10-50t510-0.5-5-4-3-2-1

0t12345

2、利用Matlab实现连续信号卷积运算 ⑴ Matlab程序代码:

① 连续信号卷积运算的通用函数sconv(): function [f,k]=sconv(f1,f2,k1,k2,p) f=conv(f1,f2);f=f*p; k0=k1(1)+k2(1);

k3=length(f1)+length(f2)-2; k=k0:p:k3*p;

subplot(2,2,1); plot(k1,f1); title('f1(t)'); xlabel('t'); ylabel('f1(t)');