x=[1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0];% 输入原码
y=x;% 输出y初始化
num=0;% 计数器初始化
for k=1:length(x)
if x(k)==1
num=num+1; % "1"计数器
if num/2 == fix(num/2) % 奇数个1时输出-1,进行极性交替
y(k)=1;
else
y(k)=-1;
end
end
end
% HDB3编码
num=0; % 连零计数器初始化
yh=y; % 输出初始化
sign=0; % 极性标志初始化为0
V=zeros(1,length(y));% V脉冲位置记录变量
B=zeros(1,length(y));% B脉冲位置记录变量
for k=1:length(y)
if y(k)==0
num=num+1; % 连“0”个数计数
if num==4 % 如果4连“0”
num=0; % 计数器清零
yh(k)=1*yh(k-4);
% 让0000的最后一个0改变为与前一个非零符号相同极性的符号
V(k)=yh(k); % V脉冲位置记录
if yh(k)==sign % 如果当前V符号与前一个V符号的极性相同
yh(k)=-1*yh(k); % 则让当前V符号极性反转,以满足V符号间相互极性反转要求
yh(k-3)=yh(k); % 添加B符号,与V符号同极性
B(k-3)=yh(k); % B脉冲位置记录
V(k)=yh(k); % V脉冲位置记录
yh(k+1:length(y))=-1*yh(k+1:length(y));
% 并让后面的非零符号从V符号开始再交替变化
end
sign=yh(k); % 记录前一个V符号的极性
end
else
num=0; % 当前输入为“1”则连“0”计数器清零
end
end % 编码完成
% re=[x',y',yh',V',B']; % 结果输出: x AMI HDB3 V&B符号
% HDB3解码
input=yh; % HDB3码输入
decode=input; % 输出初始化
sign=0; % 极性标志初始化
for k=1:length(yh)
if input(k) ~= 0
if sign==yh(k) % 如果当前码与前一个非零码的极性相同
decode(k-3:k)=[0 0 0 0];% 则该码判为V码并将*00V清零
end
sign=input(k); % 极性标志
end
end
decode=abs(decode); % 整流
subplot(3,1,1);stairs([0:length(x)-1],x);axis([0 length(x) -0.2 1.2]);
title('原码');
subplot(3,1,2);stairs([0:length(x)-1],yh);axis([0 length(x) -1.2 1.2]);
title('HDB3编码');
subplot(3,1,3);stairs([0:length(x)-1],decode);axis([0 length(x) -0.2 1.2]);
title('HDB3解码');
海神之光
- 粉丝: 5w+
- 资源: 6109
最新资源
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈