基于MATLAB的数字基带信号的各种码型的产生
单极性非归零码
单极性非归零码使用电平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的数字基带信号的各种码型的产生的更多相关文章
- 数字图像处理:基于MATLAB的车牌识别项目 标签: 图像处理matlab算法 2017-06-24 09:17 98人阅读 评论(0)
学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
- 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1. 背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...
- Hya.io – 基于 Web 的数字音频工作站
Hya.io 是基于 Web 的音频应用程序,通过 Web MIDI ,音频合成器,音序以及大量的插件来支持硬件 MIDI .您可以添加插件到工作区,将其连接到路由音频,进行播放和实验. HYA 支持 ...
- Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)
原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之——找出Matlab内置函数中,已经大概的介绍了mat ...
- 基于MATLAB边缘检测算子的实现
基于MATLAB边缘检测算子的实现 作者:lee神 1. 概述 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点.图像属性中的显著变化通常反映了属性的重要 ...
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- 基于MATLAB的腐蚀膨胀算法实现
本篇文章要分享的是基于MATLAB的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,腐蚀在二值图像的基础上做“收缩”或“细化”操作,膨胀在二值图像的基础上做“加长”或“变粗”的操作. 什么是二值图像 ...
- 基于MATLAB的均值滤波算法实现
在图像采集和生成中会不可避免的引入噪声,图像噪声是指存在于图像数据中的不必要的或多余的干扰信息,这对我们对图像信息的提取造成干扰,所以要进行去噪声处理,常见的去除噪声的方法有均值滤波.中值滤波.高斯滤 ...
随机推荐
- C++ 11 学习3:显示虚函数重载(override)
5.显示虚函数重载 在 C++ 里,在子类中容易意外的重载虚函数.举例来说: struct Base { virtual void some_func(); }; struct Derived : B ...
- DOM基础(四)
每次写DOM的时候,就觉得好像没什么好写,因为涉及到知识点的方面的确不多,对于DOM来说,更多的还是练习为主.在练习的时候,最好能结合着js基础语法的知识点来学习.这样,在学习DOM的时候就不会那么枯 ...
- Java基础——变量、数据类型
一 .变量 1.计算机的内存类似于人的大脑,计算机使用内存来记忆大量运算时要使用数据.内存是一个物理设备,如何来存储一个数据呢?很简单,把内存想象成一间旅馆,要存储的数据就好比要住宿的客人. 首先,旅 ...
- wemall app商城源码Android之ListView异步加载网络图片(优化缓存机制)
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之L ...
- 3403: [Usaco2009 Open]Cow Line 直线上的牛
3403: [Usaco2009 Open]Cow Line 直线上的牛 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 71 Solved: 62[S ...
- swift -- 构造/析构函数
一.构造函数 //当一个类实例化一个对象时候,第一个调用的方法 class Student { //属性 var name = "ser" let age : Int //1.重 ...
- Lucene实战之初体验
前言 最早做非结构化数据搜索时用的还是lucene.net,一直说在学习java的同时把lucene这块搞一搞,这拖了2年多了,终于开始搞这块了. 开发环境 idea2016.lucene6.0.jd ...
- 关于java泛型
<T> 代表的是泛型 ,实例化的时候将传入真正的数据类型,比如: public interface BaseProvider<T>{ public T test(); } 实例 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的使用步骤。附:3.3 发布与版本更新说明。
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- CSS - DOM 经常使用方法
offset() 方法返回或设置匹配元素相对于文档的偏移(位置). 包括两个属性值:top,left. position() 方法返回匹配元素相对于父元素的位置(偏移). 包括两个属性值:top,le ...