通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx

上传人:b****6 文档编号:19433067 上传时间:2023-01-06 格式:DOCX 页数:23 大小:263.20KB
下载 相关 举报
通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx_第1页
第1页 / 共23页
通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx_第2页
第2页 / 共23页
通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx_第3页
第3页 / 共23页
通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx_第4页
第4页 / 共23页
通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx

《通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx》由会员分享,可在线阅读,更多相关《通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

通信原理概论实验 数字基带传输系统数字基带信号的码型一Word文档格式.docx

functiony=snrz(x)

%输入x为二进制码,输出y为编好的码

t0=200;

%每个码元200个点

t=0:

1/t0:

length(x);

%时间序列

fori=1:

length(x)%计算机码元的值

ifx(i)==1

forj=1:

t0

%如果输入信息为1,码元对应的点值取1

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

end;

else

forj=1:

%如果输入信息为0,码元对应的点值取0

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

end

end

N=length(y);

temp=y(N);

y=[y,temp];

plot(t,y);

axis([0,i,-0.1,1.1]);

title('

单极性不归零码'

);

说明:

该函数编制好后,在MATLAB的命令窗口输入:

x=[11101001000110];

%这个二进制序列可以任意修改

snrz(x)%执行函数,输出显示对应的码型

结果如图所示:

2.编制另一个函数,用于产生双极性不归零码。

双极性不归零码的实现同单极性基本一样,只需将snrz.m中判断得到0信息后的语句“y((i-1)*t0+j)=0;

”改为“y((i-1)*t0+j)=-1;

”。

此外,双极性波形显示的时候,需要将“axis([0,i,-0.1,1.1]);

”改为“axis([0,i,-1.1,1.1]);

3.编制以下函数,用于产生单极性归零码。

%srz.m

functiony=srz(x)

ifx(i)==1

t0/2

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

%定义前半段时间值为1

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

%定义后半段时间值为0

单极性归零码'

 

4.请修改srz.m,编制另一个函数,用于产生双极性归零码。

编制另一个函数,用于产生双极性不归零码。

双极性不归零码的实现同单极性基本一样,只需将srz.m中判断得到0信息后的语句“y((i-1)*t0+j)=0;

”改为“y((2*i-2)*t0/2+j)=-1”。

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

于下一段。

5.请参照前面的程序,编制一个函数,用于产生传号差分码。

(提示:

下一个码元需要参考前一个码元,可假设第一个码元之前是零电平)

%schuanhao.m传号差分码

functiony=schuanhao(x)

p0=0;

%设定第一个码元之前是零电平

ifp0==0;

forj=1:

t0%如果输入信息为1,码元对应的点值取1

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

end;

p0=1;

else

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

p0=0;

else

end

传好差分码'

6.请参照前面的程序,编制一个函数,用于产生空号差分码。

%schuanhao.m空号差分法

ifx(i)==0

空号差分码'

7.请参照前面的程序,编制一个函数,用于产生曼彻斯特编码(数字双相码),规定发送1时编为10,发送0时编为01。

曼彻斯特编码和双极性归零码的相同点是:

发送1的时候,先正电平后零电平。

区别在于:

双极性归零码发送0时,先负电平后零电平,而曼彻斯特编码发送0时,先零电平后正电平)

%manchesete.m

functiony=manchesete(x)

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

%定义前半段时间值为0

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

%定义后半段时间值为1

曼彻斯特编码'

8.请参照前面的程序,编制一个函数,用于产生差分曼彻斯特编码(条件双相码)。

%tjshx.m

functiony=tjshx(x)

t0/2%如果输入信息为1,码元对应的点值取1

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

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

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

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

ifp0==1;

条件双向码'

9编制一个函数,用于产生传号反转码(CMI)

代码:

%xhfz.m

functiony=xhfz(x)

信号反转码'

显示结果:

9.编制一个函数,用于产生密勒码(延迟调制码)

functiony=yctz(x)

if(x(i)==1)

ifp0==0

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

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

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

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

if(x(i-1)==0)

end

米勒码'

10.编制一个函数,用于产生AMI(传号交替反转码)。

%ami.m

functiony=ami(x)

p0=-1;

%由于遇到“1”交替变换为“+1”和“-1”,因此初始信息为-1

ifp0==-1;

%定义后半段时间值为0

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

p0=-1;

else

axis([0,i,-1.1,1.1]);

传号交替反转码'

%hdb3.m

functiony=hdb3(x)

zerocount=0;

%该变量用于统计连零的数量

bcount=0;

%该变量用于统计上一个V脉冲以来B脉冲的数量

B=1;

%该变量存储前一个脉冲的极性,等于1时为正脉冲,等于负1时为负脉冲

%循环处理二进制序列

length(x)

ifx(i)==1%如果为符号1

zerocount=0;

%连零统计清零

bcount=bcount+1;

%B脉冲数量+1

ifB==1%如果前一个脉冲为正脉冲,输出一个负脉冲

B=-1;

%更新B

else%如果前一个脉冲为负脉冲,输出一个正脉冲

B=1;

end

else%如果符号为0

zerocount=zerocount+1;

%连零统计+1

ifzerocount==4%如果连零数量等于4

ifmod(bcount,2)==1%如果自上一V脉冲以来已经有了奇数个B

ifB==1

%如果前一个脉冲为正脉冲,输出一个正的V脉冲,这时取代节是000V+

%如果前一个脉冲为负脉冲,输出一个负的V脉冲,这时取代节是000V+

else%如果自上一V脉冲以来已经有了偶数个B

ifB==1

%如果前一个脉冲为正脉冲,输出一个负的V脉冲,这时取代节是B-00V-

t0/2%调整往前数第三个符号为B-

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

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

B=-1%更新B

%如果前一个脉冲为负脉冲,输出一个正的V脉冲,这时取代节是B+00V+

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

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

B=+1;

bcount=0;

%bcount清零

else%如果不是4连零,直接输出0

end%endfor

x=[10110000000110000001]

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

当前位置:首页 > 高中教育 > 小学教育

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

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