单极性非归零码

单极性非归零码使用电平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. 你知道自己执行的是哪个jre吗?

    多个JRE 我在做<Java日志工具之java.util.logging.Logger>的DEMO时,修改java.util.logging.Logger的配置文件,怎么修改都不起作用,因 ...

  2. 出现java.lang.reflect.UndeclaredThrowableException异常

    解决方案:1.看导进来的项目是否有中文路径.2.看是否有get.set方法没写.3.和部署的环境有关.比如,是否写了构造函数.EJB需要.

  3. 开源的.NET定时任务组件Hangfire解析

    项目慢慢就要开工了,很多园友都在问这个事情,看来大伙对这事很上心啊,事情需要一步步的来,尽量写出一个我们都满意的项目.以前每次在博客前面都会扯淡一下,不过很多人都抱怨这样做不好,加上我这人扯淡起来就停 ...

  4. 使用Func<>和Action简化委托

    /// <summary> /// 入口 /// </summary> public void Run() { TestDelegate t = test; t(); Acti ...

  5. 微信JS初始化--微信JS系列文章(一)

    概述 微信JS的使用方法,官方文档已经描述得比较清楚了,这里我就不重复介绍了,本文意在提供现成的代码,供大家快速迭代开发,以及补充一下官方文档描述得不够清楚的地方,避免大家踩相同的坑. 微信JS初始化 ...

  6. 000 Python之禅

    The Zen of Python, by Tim Peters Beautiful is better than ugly.Explicit is better than implicit.Simp ...

  7. lsusb命令

    运行 yum install libusb usbutils

  8. Windbg调试中遇到的问题

    1.找不到符号文件 抓取完Dump后,打开WinDbg,Ctrl+D找到刚才抓取的Dump文件,报如下异常: *** ERROR: Symbol file could not be found. De ...

  9. 彻底取消Myeclipse对js文件的校验

    这个是我在网上看到的,自己也做一下笔记. 一般情况下,关掉校验:Window -->Preferences -->MyEclipse -->单击Validation,这样不一定有效. ...

  10. Mesos+Zookeeper+Marathon+Docker分布式集群管理最佳实践

    参考赵班长的unixhot以及马亮blog 笔者QQ:572891887 Linux架构交流群:471443208 1.1Mesos简介 Mesos是Apache下的开源分布式资源管理框架,它被称为分 ...