通信原理Matlab仿真实验报告Word文档下载推荐.docx
《通信原理Matlab仿真实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通信原理Matlab仿真实验报告Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
];
n1=length(t1);
n2=length(t2);
%根据周期矩形信号函数周期,计算点数
f=[ones(n1,1);
zeros(n2,1);
ones(n1,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]);
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%循环显示谐波叠加图形
x=x+2*a*sinc(a*k)*cos(2*pi*t*k/T0);
y(k,:
)=x;
holdon;
plot(t,y(k,:
holdoff;
axis([-(T0+T1/2)-0.5,[T0+T1/2]+0.5,-0.5,1.5]);
title(strcat(num2str(k),'
次谐波叠加'
xlabel('
t'
end
plot(t,y(1:
m+1,:
axis([-T0/2,T0/2,-0.5,1.5]);
各次谐波叠加'
②在命令窗口调用rectexpd()函数:
T1=5;
T0=10;
m=5;
rectexpd(T1,T0,m)
⑵Matlab仿真结果:
2、利用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);
f1(t)'
ylabel('
subplot(2,2,2);
plot(k2,f2);
f2(t)'
subplot(2,2,3);
plot(k,f);
f(t)=f1(t)*f2(t)'
f(t)'
h=get(gca,'
position'
h(3)=2.5*h(3);
h);
②在命令窗口调用sconv()函数:
p=0.01;
k1=0:
2;
f1=exp(-k1);
k2=0:
3;
f2=ones(1,length(k2));
[f,k]=sconv(f1,f2,k1,k2,p)
实验二
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));
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);
temp=-y(j);
if(temp<
y(j)=-temp*A1/A;
y(j)=-exp(temp*A1-1)/A;
②建立函数APCM()
functioncode=APCM(x,n)
xmax=max(abs(x));
x=x/xmax;
xlen=length(x);
y=zeros(1,xlen);
xlen
ifx(i)>
=0
ifx(i)<
=1/A
y(i)=(A*x(i))/A1;
y(i)=(1+log(A*x(i)))/A1;
x1=-x(i);
ifx1<
y(i)=-(A*x1)/A1;
y(i)=-(1+log(A*x1))/A1;
y1=y*(2^(n-1)-1);
y1=round(y1);
code=zeros(length(y1),n);
c2=zeros(1,n-1);
length(y1)
if(y1(i)>
0)
c1=1;
c1=0;
y1(i)=-y1(i);
r=rem(y1(i),2);
y1(i)=(y1(i)-r)/2;
c2(j)=r;
c2=fliplr(c2);
code(i,:
)=[c1c2];
③在新函数中调用前两个函数
t=0:
1;
x=sin(2*pi*t);
code=APCM(x,7);
y=ADecode(code,7);
subplot(2,1,1)
plot(t,x);
原函数的图形'
subplot(2,1,2)
plot(t,y);
解码后函数的图形'
2、用Matlab模拟DSB调制及解调过程
closeall;
clearall;
dt=0.001;
%采样时间间隔
fm=1;
%信源最高频率
fc=10;
%载波中心频率
N=4096;
T=N*dt;
dt:
T-dt;
mt=sqrt
(2)*cos(2*pi*fm*t);
%信源
s_dsb=mt.*cos(2*pi*fc*t);
%DSB-SC双边带抑制载波调幅
B=2*fm;
subplot(311)
plot(t,s_dsb,'
b-'
%画出DSB信号波形
plot(t,mt,'
r--'
%画出m(t)信号波形
DSB调制信号'
%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-'
plot(t,mt/2,'
相干解调后的信号波形与输入信号的比较'
subplot(313)
[f,sf]=T2F(t,s_dsb);
%求调制信号的频谱
psf=(abs(sf).^2)/T;
%求调制信号的功率谱密度
plot(f,psf);
axis([-2*fc2*fc0max(psf)]);
DSB信号功率谱'
f'
实验三
1、用Matlab模拟双极性归零码
functiony=drz(x)
t0=300;
x=[100110000101];
1/t0:
length(x);
if(x(i)==1)
t0/2
y(t0/2*(2*i-2)+j)=1;
y(t0/2*(2*i-1)+j)=0;
y(t0/2*(2*i-2)+j)=-1;
y=[y,x(i)];
M=max(y);
m=min(y);
subplot(211)
axis([0,i,m-0.1,M+0.1]);
100110000101'
2、用Matlab产生2FSK信号
①建立函数fskdigital()
functionfskdigital(s,f1,f2)
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;
c=sin(f1*t);
b=ones(1,100)
m1=[m1m];
c1=[c1c];
b1=[b1b];
fsk=c1.*m1;
subplot(211);
plot(b1,'
r'
)title('
原始信号'
axis([0100*length(s)-0.11.1]);
subplot(212);
plot(fsk)title('
2FSK信号'
②在命令窗口调用函数fskdigital()
>
s=[10110010];
f1=200;
f2=100;
fskdigital(s,f1,f2)
3、用Matlab的simulink模块模拟三角波的分解与还原
⑴模块图
⑵仿真结果:
①三角波原图
②用矩形波近似的冲击函数
③分解后的三角波
④经低通还原的三角波