通信原理Matlab仿真实验报告.docx

上传人:b****5 文档编号:7428588 上传时间:2023-01-23 格式:DOCX 页数:17 大小:215.82KB
下载 相关 举报
通信原理Matlab仿真实验报告.docx_第1页
第1页 / 共17页
通信原理Matlab仿真实验报告.docx_第2页
第2页 / 共17页
通信原理Matlab仿真实验报告.docx_第3页
第3页 / 共17页
通信原理Matlab仿真实验报告.docx_第4页
第4页 / 共17页
通信原理Matlab仿真实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

通信原理Matlab仿真实验报告.docx

《通信原理Matlab仿真实验报告.docx》由会员分享,可在线阅读,更多相关《通信原理Matlab仿真实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

通信原理Matlab仿真实验报告.docx

通信原理Matlab仿真实验报告

通信原理Matlab仿真

实验报告

学号:

姓名:

实验一

1、利用Matlab实现矩形信号串信号分解与合成

⑴Matlab程序代码:

①矩形信号串信号分解与合成函数rectexpd():

functionrectexpd(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('矩形信号串');gridon;

a=T1/T0;

pause;%绘制离散幅度谱

freq=[-20:

1:

20];mag=abs(a*sinc(a*freq));

stem(freq,mag);

x=a*ones(size(t));

fork=1:

m%循环显示谐波叠加图形

pause;

x=x+2*a*sinc(a*k)*cos(2*pi*t*k/T0);

y(k,:

)=x;

plot(t,y(m+1,:

));holdon;

plot(t,y(k,:

));holdoff;gridon;

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,:

));gridon;

axis([-T0/2,T0/2,-0.5,1.5]);

title('各次谐波叠加');xlabel('t');

②在命令窗口调用rectexpd()函数:

T1=5;

T0=10;

m=5;

rectexpd(T1,T0,m)

⑵Matlab仿真结果:

 

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)');

subplot(2,2,2);

plot(k2,f2);title('f2(t)');

xlabel('t');

ylabel('f2(t)');

subplot(2,2,3);

plot(k,f);

title('f(t)=f1(t)*f2(t)');

xlabel('t');

ylabel('f(t)');

h=get(gca,'position');

h(3)=2.5*h(3);

set(gca,'position',h);

②在命令窗口调用sconv()函数:

p=0.01;

k1=0:

p:

2;

f1=exp(-k1);

k2=0:

p:

3;

f2=ones(1,length(k2));

[f,k]=sconv(f1,f2,k1,k2,p)

⑵Matlab仿真结果:

 

实验二

1、用Matlab模拟图形A律解码

⑴Matlab程序代码:

①建立函数ADecode()

functiony=ADecode(code,n)

codesize=size(code);

cr_len=codesize

(1);

cl_len=codesize

(2);

ca=zeros(1,cl_len-1);

fori=1:

cr_len

ca=code(i,2:

n);

s=0;

forj=1:

n-1

s=s+ca(j)*2^(n-1-j);

end

a=code(i,1);

y(i)=s*((-1)^(a+1));

end

y=y/(2^(n-1));

A=87.6;

A1=1+log(A);

forj=1:

length(y)

if(y(j)>=0)

if(y(i)<=1/A1)

y(j)=y(j)*A1/A;

else

y(j)=exp(y(j)*A1-1/A);

end

else

temp=-y(j);

if(temp<=1/A1)

y(j)=-temp*A1/A;

else

y(j)=-exp(temp*A1-1)/A;

end

end

end

②建立函数APCM()

functioncode=APCM(x,n)

xmax=max(abs(x));

x=x/xmax;

xlen=length(x);

y=zeros(1,xlen);

A=87.6;

A1=1+log(A);

fori=1:

xlen

ifx(i)>=0

ifx(i)<=1/A

y(i)=(A*x(i))/A1;

else

y(i)=(1+log(A*x(i)))/A1;

end

else

x1=-x(i);

ifx1<=1/A

y(i)=-(A*x1)/A1;

else

y(i)=-(1+log(A*x1))/A1;

end

end

end

y1=y*(2^(n-1)-1);

y1=round(y1);

code=zeros(length(y1),n);

c2=zeros(1,n-1);

fori=1:

length(y1)

if(y1(i)>0)

c1=1;

else

c1=0;y1(i)=-y1(i);

end

forj=1:

n-1

r=rem(y1(i),2);

y1(i)=(y1(i)-r)/2;

c2(j)=r;

end

c2=fliplr(c2);

code(i,:

)=[c1c2];

end

③在新函数中调用前两个函数

t=0:

0.01:

1;

x=sin(2*pi*t);

code=APCM(x,7);

y=ADecode(code,7);

subplot(2,1,1)

plot(t,x);

title('原函数的图形');

subplot(2,1,2)

plot(t,y);

title('解码后函数的图形');

⑵Matlab仿真结果:

2、用Matlab模拟DSB调制及解调过程

⑴Matlab程序代码:

closeall;

clearall;

dt=0.001;%采样时间间隔

fm=1;%信源最高频率

fc=10;%载波中心频率

N=4096;

T=N*dt;

t=0:

dt:

T-dt;

mt=sqrt

(2)*cos(2*pi*fm*t);%信源

s_dsb=mt.*cos(2*pi*fc*t);%DSB-SC双边带抑制载波调幅

B=2*fm;

figure

(1);

subplot(311)

plot(t,s_dsb,'b-');

holdon;%画出DSB信号波形

plot(t,mt,'r--');%画出m(t)信号波形

title('DSB调制信号');

xlabel('t');

gridon;

%DSBdemodulation

rt=s_dsb.*cos(2*pi*fc*t);

rt=rt-mean(rt);

[f,rf]=T2F(t,rt);

[t,rt]=lpf(f,rf,B);

subplot(312)

plot(t,rt,'k-');

holdon;

plot(t,mt/2,'r--');

title('相干解调后的信号波形与输入信号的比较');

xlabel('t');

gridon;

subplot(313)

[f,sf]=T2F(t,s_dsb);%求调制信号的频谱

psf=(abs(sf).^2)/T;%求调制信号的功率谱密度

plot(f,psf);

axis([-2*fc2*fc0max(psf)]);

title('DSB信号功率谱');

xlabel('f');

gridon;

⑵Matlab仿真结果:

 

实验三

1、用Matlab模拟双极性归零码

⑴Matlab程序代码:

functiony=drz(x)

t0=300;

x=[100110000101];

t=0:

1/t0:

length(x);

fori=1:

length(x);

if(x(i)==1)

forj=1:

t0/2

y(t0/2*(2*i-2)+j)=1;

y(t0/2*(2*i-1)+j)=0;

end

else

forj=1:

t0/2

y(t0/2*(2*i-2)+j)=-1;

y(t0/2*(2*i-1)+j)=0;

end

end

end

y=[y,x(i)];M=max(y);m=min(y);

subplot(211)

plot(t,y);gridon;

axis([0,i,m-0.1,M+0.1]);

title('100110000101');

⑵Matlab仿真结果:

2、用Matlab产生2FSK信号

⑴Matlab程序代码:

①建立函数fskdigital()

functionfskdigital(s,f1,f2)

t=0:

2*pi/99:

2*pi;

m1=[];c1=[];b1=[];

forn=1:

length(s)

ifs(n)==0;

m=ones(1,100);

c=sin(f2*t);

b=zeros(1,100)

elses(n)==1;

m=ones(1,100);

c=sin(f1*t);

b=ones(1,100)

end

m1=[m1m];c1=[c1c];b1=[b1b];

end

fsk=c1.*m1;

subplot(211);

plot(b1,'r')title('原始信号');

axis([0100*length(s)-0.11.1]);

gridon;

subplot(212);

plot(fsk)title('2FSK信号');

gridon;

②在命令窗口调用函数fskdigital()

>>s=[10110010];

f1=200;

f2=100;

fskdigital(s,f1,f2)

⑵Matlab仿真结果:

3、用Matlab的simulink模块模拟三角波的分解与还原

⑴模块图

⑵仿真结果:

①三角波原图

②用矩形波近似的冲击函数

③分解后的三角波

④经低通还原的三角波

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1