当前位置:   article > 正文

MATLAB----实现数字信号基带传输_当输入二元信息序列为100110000101时,用matlab画出双极性不归零码和双极性归零码的波形

当输入二元信息序列为100110000101时,用matlab画出双极性不归零码和双极性归零码的波形示意图。

实验内容

  • 不经调制变换的原始数据信号称为基带信号,基带信号的频带是从直流到某个截止频率
    的基本频带(或频带分布在低频段,通常包含直流),且未经过调制的信号,类似于经过相应 带宽低通滤波后的频带,其波形称为基带波形。
  • 从形式上看,基带信号有模拟和数字之分,具有高、低(也可能是正、负)两种电平状
    态的电脉冲序列被称为数字基带信号,其特点是信号频带通常从直流和低频开始并且未经载 波调制;而未经过调制的模拟信号可称为模拟基带信号。
  • 数字基带信号可以直接传输,这种传输方式被称为数字信号的基带传输。直接传送这种 基带信号的系统就称为数字基带传输系统。
  • 由于数字基带信号是数字信息的电脉冲表示,不同形式的数字基带信号(又称为码型)
    具有不同的频谱结构和功率谱分布,合理设计数字基带信号以使数字信息变换成适合于给定
    信道传输特性的频谱结构,这样的一个问题又称为数字信息的码型转换问题 数字信号的码型有很多类型,不同的码型有不同的优点。

实验原理与方法

1.单极性非归零码

用电平 1 来表示二元信息中的“1”,用电平 0 来表示二元信息中的“0”,电平在整个码元的时间里不变,记作 NRZ 码。二元信息序列 100110000101 的单极性非归零码波形如图所示:
在这里插入图片描述

2.单极性归零码

它与单极性非归零码不同之处在于输入二元信息为 1 时,给出的码元前半时间为 1,后半时间为 0,输入 0 则完全相同。二元信息序列 100110000101 的单极性归零码波形如图所示:
在这里插入图片描述
用 MATLAB 实现双极性非归零码同单极性一样,只需将 snrz.m 中的判断得到 0 信息后的语句 y((i-1)*grid+j)=0;中的 0 改为-1 即可。

4.双极性归零码

此种码型比较特殊,它使用前半时间 1,后半时间 0 来表示信息 1;采用前半时间-1,后办时间 0 来表示信息 0。因此它具有三个电平,严格来说是一种三元码(电平 1,0,-1)。码型如图所示:
在这里插入图片描述
双极性归零码包含了丰富的时间信息,每一个码元都有一个跳变沿,便于接收方定时。同时对随机信号,信息 1 和 0 出现概率相同,所以此种码元几乎没有直流分量。

5.数字双相码

该码型又称曼彻斯特(macheser)码,此种码元方法采用一个码元时间的中央时刻从 0到 1 的跳变来表示信息 1,从 1 到 0 的跳变来表示信息 0。或者说是前半时间用 0、后半时间用 1 来信息表示 1,前半时间用 1、后半时间用 0 来信息表示 0。二元信息序列 100110000101的数字双相码波形如图所示:
在这里插入图片描述
数字双相码的好处是含有丰富的定时信息,每一个码元都有跳变沿,遇到连续的 0 或 1 时不会出现长时间维持同一电平的现象。另外,虽然数字双相码有直流但对每一个码元其直流分量是固定的 0.5,只要叠加-0.5 就转换为没有直流了,实际上是没有直流的,方便传输。
MATLAB 实现数字双相码同双极性归零码的实现类似,只要将语句

y(grid/2*(2i-2) +j)= 1;
y(grid/2
(2i-1)+j)=0;
改为
y(grid/2
(2i-2) +j)=0;
y(grid/2
(2i-1)+j)=1;
将语句
y(grid/2
(2i-2) +j)=-1;
y(grid/2
(2i-1)+j)=0;
改为:
y(grid/2
(2i-2) +j)=1;
y(grid/2
(2*i-1)+j)=0;

即可。函数文件为 macheser.m。

6.差分曼彻斯特码

若把数字双相码中用绝对电平表示的波形改成用电平的相对变化来表示的话,比如相邻周期的方波如果同相则表示“0”,反相则表示“1”,就形成了差分码,通常称为条件双相码,也叫差分曼彻斯特码。也可这样描述,差分曼彻斯特码不仅与当前的信息元有关,并且与前一个信息元也有关,确切地说应该是同前一个码元的电平有关。差分曼彻斯特码也使用中央时刻的电平跳变来表示信息,与数字双相码不同之处在于对信息 1,则前半时间的电平与前一个码元的后半时间电平相同,在中央处再跳变;对信息 0,则前半时间的电平与前一个码元的后半时间电平相反(即遇 0 取 1,遇 1 取 0)。二元信息序列 100110000101 的差分曼彻斯特码波形如图 6 所示:
在这里插入图片描述
差分曼彻斯特码在遇到传输电平极性反转情况时同前面介绍的几种码相比不会出现译码错误。

  • 其中的grid=300表示在一段横线中,是用300个点组成的。
  • 在命令行输入t=[1 0 0 1 1 0 0 0 0 1 01],并且注意每个数字之间一定要有空格。
  • 在代用相应的函数,需要注意的是,保存的.m文件必须是在运行文件下,即bin文件下。

实验代码

1.单极性非归零码

1.function y=text4_1(x)  
2.grid = 300;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid  
7.            y((i-1)*grid+j)=1;  
8.        end  
9.    else  
10.        for j=1:grid  
11.            y((i-1)*grid+j)=0;  
12.        end  
13.    end  
14.end  
15.y=[y,x(i)];  
16.M=max(y);  
17.m=min(y);  
18.subplot(2,1,1);  
19.plot(t,y);  
20.axis([0,i,m-0.1,M+0.1]);  
21.title('1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2.单极性归零码

1.function y=text4_2(x)  
2.grid = 300;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid/2  
7.            y(grid/2*(2*i-2)+j)=1;  
8.            y(grid/2*(2*i-1)+j)=0;  
9.        end  
10.    else  
11.        for j=1:grid/2  
12.           y((i-1)*grid+j)=0;  
13.        end  
14.    end  
15.end  
16.y=[y,x(i)];  
17.M=max(y);  
18.m=min(y);  
19.subplot(2,1,1);  
20.plot(t,y);  
21.axis([0,i,m-0.1,M+0.1]);  
22.title(' 1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3.双极性非归零码

1.function y=text4_3(x)  
2.grid = 100;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid  
7.            y((i-1)*grid+j)=1;  
8.        end  
9.    else  
10.        for j=1:grid  
11.            y((i-1)*grid+j)=-1;  
12.        end  
13.    end  
14.end  
15.y=[y,x(i)];  
16.M=max(y);  
17.m=min(y);  
18.subplot(2,1,1);  
19.plot(t,y);  
20.axis([0,i,m-0.1,M+0.1]);  
21.title('1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

4.双极性归零码

1.function y=text4_4(x)  
2.grid = 300;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid/2  
7.            y(grid/2*(2*i-2)+j)=1;  
8.            y(grid/2*(2*i-1)+j)=0;  
9.        end  
10.    else  
11.        for j=1:grid/2  
12.           y(grid/2*(2*i-2)+j)=-1;  
13.            y(grid/2*(2*i-1)+j)=0;  
14.        end  
15.    end  
16.end  
17.y=[y,x(i)];  
18.M=max(y);  
19.m=min(y);  
20.subplot(2,1,1);  
21.plot(t,y);  
22.axis([0,i,m-0.1,M+0.1]);  
23.title('1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

5.数字双相码

1.function y=text4_5(x)  
2.grid = 300;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid/2  
7.            y(grid/2*(2*i-2)+j)=0;  
8.            y(grid/2*(2*i-1)+j)=1;  
9.        end  
10.    else  
11.        for j=1:grid/2  
12.           y(grid/2*(2*i-2)+j)=1;  
13.            y(grid/2*(2*i-1)+j)=0;  
14.        end  
15.    end  
16.end  
17.y=[y,x(i)];  
18.M=max(y);  
19.m=min(y);  
20.subplot(2,1,1);  
21.plot(t,y);  
22.axis([0,i,m-0.1,M+0.1]);  
23.title('1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

6.差分曼彻斯特码

1.function y=text4_6(x)  
2.grid = 300;  
3.t=0:1/grid:length(x);  
4.for i=1:length(x)  
5.    if(x(i)==1)  
6.        for j=1:grid/2  
7.            y(grid/2*(2*i-2)+j)=0;  
8.            y(grid/2*(2*i-1)+j)=1;  
9.         end  
10.    else  
11.        for j=1:grid/2  
12.           y(grid/2*(2*i-2)+j)=1;  
13.           y(grid/2*(2*i-1)+j)=0;  
14.        end  
15.    end  
16.end  
17.    for j=2:length(x)  
18.        if(x(i)==1)  
19.            for j=1:grid/2  
20.                 y(grid/2*(2*i-2)+j)=1-y(grid/2*(2*i-3)+grid/4);  
21.                 y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);  
22.            end  
23.        else  
24.            for j=1:grid/2  
25.                 y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);  
26.                 y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);  
27.            end  
28.        end  
29.    end  
30.y=[y,y(i*grid)];  
31.M=max(y);  
32.m=min(y);  
33.subplot(2,1,1);  
34.plot(t,y);  
35.axis([0,i,m-0.1,M+0.1]);  
36.title('1 0 0 1 1 0 0 0 0 1 0 1');  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

实验结果

1.单极性非归零码

在这里插入图片描述

2.单极性归零码

在这里插入图片描述

3.双极性非归零码

在这里插入图片描述

4.双极性归零码

在这里插入图片描述

5.数字双相码

在这里插入图片描述

6.差分曼彻斯特码

在这里插入图片描述

matlab文件

关于matlab所有的文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/351998
推荐阅读
相关标签
  

闽ICP备14008679号