单极性非归零码

单极性非归零码使用电平1来表示二元信息中的“1”,用电平0来表示二元信息中的“0”,电平在整个码元的时间里不变单极性非归零码的优点是实现简单,但由于含有直流分量,对在带限信道中的传输不利,另外当出现连续的0或连续的1时。电平长时间保持一个值,不利于提取时间信息以便获得同步。

function y = snrz(x)

%本函数实现将输入的一段二进制代码编为相应的单极性非归零码输出

%输入x为二进制码,输出y为编出的单极性非归零码

t0 = 300;

t = 0:1/t0:length(x);

for i = 1:length(x)     %计算码元的值

if(x(i) == 1)       %如果信息为1

for j = 1:t0    %改码元对应的点值为1

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

end

else

for j = 1:t0    %反之,信息为0,码元对应点值取0

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

end

end

end

y = [y,x(i)];

M = max(y);

m = min(y);

subplot(2,1,1);

plot(t,y);grid;

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

%使用title命令标记各码元对应的二元信息
title('1 0 0 1 1 0 0 0 0 1 0 1');
ylabel('单极性非归零码');

单极性归零码

单极性归零码输入信息为1时,给出的码元前半时间为1,后半时间为0,输入0则完全相同。单极性归零码部分解决了传输问题,直流分量减小,但遇到连续长0时同样无法给出定时信息。

function y = srz(x)

%本函数实现将输入的一段二进制代码编为相应的单极性归零码输出

%输入x为二进制码,输出y为编出的单极性归零码

t0 = 300;

t = 0:1/t0:length(x);   %给出相应的时间序列

for i = 1:length(x)     %进行码型变换

if(x(i) == 1)       %若输入信息为1

for j = 1:t0/2

y(t0/2*(2*i-2)+j) = 1;  %定义前半时间值为1

y(t0/2*(2*i-1)+j) = 0;  %定义后半时间值为0

end

else

for j = 1:t0/2          %反之,输入信息为0

y(t0*(i-1)+j) = 0;   %定义所有时间值为0

end

end

end

y = [y,x(i)];

M = max(y);

m = min(y);

subplot(2,1,1);

plot(t,y);grid;

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

%使用title命令标记各码元对应的二元信息
title('1 0 0 1 1 0 0 0 0 1 0 1');
ylabel('单极性归零码');

双极性非归零码

%双极性非归零码与单极性非归零码类似,区别仅在于双极性使用电平-1来表示信息0

function y = dnrz(x)

%本函数实现将输入的一段二进制代码编为相应的双极性非归零码输出

%输入x为二进制码,输出y为编出的双极性非归零码

t0 = 300;

t = 0:1/t0:length(x);

for i = 1:length(x)

if(x(i) == 1)

for j = 1:t0

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

end

else

for j = 1:t0

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

end

end

end

y = [y,x(i)];

M = max(y);

m = min(y);

subplot(2,1,1);

plot(t,y);grid;

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

%使用title命令标记各码元对应的二元信息
title('1 0 0 1 1 0 0 0 0 1 0 1');
ylabel('双极性非归零码');

双极性归零码

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

function y = drz(x)

%本函数实现将输入的一段二进制代码编为相应的双极性归零码输出

%输入x为二进制码,输出y为编出的双极性归零码

t0 = 300;

t = 0:1/t0:length(x);

for i = 1:length(x)

if(x(i) == 1)

for j = 1:t0/2

y(t0/2*(2*i-2)+j) = 1;  %定义前半时间值为1

y(t0/2*(2*i-1)+j) = 0;  %定义后半时间值为0

end

else

for j = 1:t0/2              %反之,输入信息0

y(t0/2*(2*i-2)+j) = -1; %定义前半时间值为-1

y(t0/2*(2*i-1)+j) = 0;  %定义后半时间值为0

end

end

end

y = [y,x(i)];                       %给序列y加上最后一位,便于作图

M = max(y);

m = min(y);

subplot(2,1,1);

plot(t,y);grid;

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

AMI码

AMI码全称是传号交替反转码,其编码规则是将消息码的1交替的变换为+1和-1,而0保持不变。

AMI码的优点是没有直流成分,且高低频分量少,能量集中在频率为1/2码速处;编解码电路简单,且可利用传号极性交替这一规律观察误码情况;

AMI码的缺点是当原码出现长连0时,信号电平长时间不跳变,造成提取定时信号的困难。

function y = ami(x)

%本函数实现将输入的一段二进制代码编为相应的AMI码输出

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

t0 = 300;

t = 0:1/t0:length(x);

m = 1;  %符号标记

for i = 1:length(x)     %计算码元的值

if(x(i) == 1) m=-m;      %如果信息为1

for j = 1:t0    %改码元对应的点值为1

if(m == -1)

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

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

end

end

else

for j = 1:t0    %反之,信息为0,码元对应点值取0

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

end

end

end

y = [y,x(i)];

M = max(y);

m = min(y);

subplot(2,1,1);

plot(t,y);grid;

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

%使用title命令标记各码元对应的二元信息
title('1 0 0 1 1 0 0 0 0 1 0 1');
ylabel('AMI码');

本次操作激励t=[1 0 0 1 1 0 0 0 0 1 0 1];

以下是生成的信号波形图:

基于MATLAB的数字基带信号的各种码型的产生的更多相关文章

  1. 数字图像处理:基于MATLAB的车牌识别项目 标签: 图像处理matlab算法 2017-06-24 09:17 98人阅读 评论(0)

    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...

  2. 基于小波变换的数字图像处理(MATLAB源代码)

    基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...

  3. 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现

    基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1.   背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...

  4. Hya.io – 基于 Web 的数字音频工作站

    Hya.io 是基于 Web 的音频应用程序,通过 Web MIDI ,音频合成器,音序以及大量的插件来支持硬件 MIDI .您可以添加插件到工作区,将其连接到路由音频,进行播放和实验. HYA 支持 ...

  5. Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

    原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之——找出Matlab内置函数中,已经大概的介绍了mat ...

  6. 基于MATLAB边缘检测算子的实现

    基于MATLAB边缘检测算子的实现 作者:lee神 1.   概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要 ...

  7. 基于MATLAB的人脸识别算法的研究

    基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...

  8. 基于MATLAB的腐蚀膨胀算法实现

    本篇文章要分享的是基于MATLAB的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,腐蚀在二值图像的基础上做“收缩”或“细化”操作,膨胀在二值图像的基础上做“加长”或“变粗”的操作. 什么是二值图像 ...

  9. 基于MATLAB的均值滤波算法实现

    在图像采集和生成中会不可避免的引入噪声,图像噪声是指存在于图像数据中的不必要的或多余的干扰信息,这对我们对图像信息的提取造成干扰,所以要进行去噪声处理,常见的去除噪声的方法有均值滤波.中值滤波.高斯滤 ...

随机推荐

  1. if(){}else 语句的正确写法以及它的嵌套使用

    if(一个返回bool值的条件表达式) { 程序块 } else{} 它的执行过程我们可以通过一个程序来了解 static void Main(string[] args) { ) // 条件1 { ...

  2. Extjs中grid前端分页使用PagingMemoryProxy【二】

        在项目中遇到Grid前端分页,本人也是刚接触extjs没多久,为了实现效果,一直找了很久才实现出来,对于代码中的一些也不能详细的说明出来, 不知道能不能帮助到遇到同样问题的朋友,所以将例子代码 ...

  3. 怎么理解js的面向对象编程

    面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...

  4. appium初学者,使用之检查appium环境报错Could not detect Mac OS X Version from sw_vers output: '10.12.1’,

    这个问题存在的原因就是appium不兼容最新的mac10.12版本. 由于10.12是最新mac版本,appium1.5.3并未提供支持,所以: 在终端输入grep -rl "Could n ...

  5. JavaScript中冒泡排序

    在我大学的时候,就已经接触到过很多的排序方式,只是那时候听得还很懵懂,大概知道这么个东西,也对冒泡排序有点印象,但真要我写,我是写不出来的.最近,在回顾js基础的时候,又接触到了冒泡排序.于是,就把冒 ...

  6. [BNUZOJ1261][ACM][2016北理校赛]方块消除(栈,字符串)

    玩过方块消除游戏吗?现在规定当有两个或两个以上相邻且颜色相同的方块在一起的时候,它们就会产生消除反应.当存在多个消除反应同时产生时,最下的反应先执行.现在只给你其中一列,求最后剩下的方块结果. 输入要 ...

  7. react学习总结

    http://www.runoob.com/react/react-tutorial.html一般先看一些中文的简单的介绍和一些基本概念http://reactjs.cn/react/docs/get ...

  8. github 删除远程仓库项目中的任意文件夹

    今天上传代码把不需要的push上去了.结果想删除那个不想要的怎么弄都不行.网上大部分都是把那个项目整个暴力删除.那可不行啊那么多都删除.下次上传不是要命啊! 试啊试终于解决了.顺便记录一下也帮助下需要 ...

  9. Oracle物化视图,物化视图日志,增量刷新同步远程数据库

    1.创建DBLINK -- Drop existing database link drop public database link LQPVPUB; -- Create database link ...

  10. 蓝牙DA14580开发:固件格式、二次引导和烧写

    嵌入式企鹅圈原创团队成员黄鑫提供. 相比NRF52832和CC254X,蓝牙单芯片DA14580在OTA和二次引导上要复杂一些,不仅体现在memory map.引导过程等流程上,而且在固件格式.生成和 ...