
clear
clc
a表示元素个数,可以修改码元为任意个数如1024
r随机产生离散均匀二值分布(1,2),共a-1个
r每个元素减1变为(0,1)二值随机数列
r跟书上一致,从1开始随机产生离散均匀二值分布(1,2),共a个
o将原序列保存起来,便于后面解码后比较
ori
for n=1:a
if rn(n)==1 ;
l每检测到一个1变一次符号
end
end
A变为AMI码:每过一个1就使原来的1变一次号
AMI
m符号初始化
for k=1:a-3
m记录可能存在的连续4个0前面非零码元的符号
if rn(k)==0
if rn(k+1)==0
if rn(k+2)==0
i检测是否连续4个码元都是0
r用2表示书上的V
end
end
end
end
end
r
l表示两个V之间有偶数个非零码
for s=1:a
if abs(rn(s))==2
for d=s+1:a
if abs(rn(d))==1 %V之间的非零码只有+1,-1遇到一个一使l变一次号,表示偶数或奇数
l=-l;
end
if abs(rn(d))==2
if l~=1
l不需要插入B时若检测到V也应把计数器清零
最初版本的升级处1
e检测到下一个V时,若为偶数个,则插入B
r代表B,插入不带符号的B
rn(d:a)=-rn(d:a);
e后的符号再交替
end
end
end
r到此处完成了插入不带符号的B
HDB3= %给B(3)添加了符号,并且实现了V后的符号再交替
HDB3
运行结果:
ori =
Columns 1 through 18
1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0
Columns 19 through 20
1 0
AMI =
Columns 1 through 18
-1 1 -1 0 0 1 -1 0 0 0 0 0 0 0 0 0 1 0
Columns 19 through 20
-1 0
HDB3 =
Columns 1 through 18
-1 1 -1 0 0 1 -1 0 0 0 -2 3 0 0 2 0 -1 0
Columns 19 through 20
1 0
2代表V,3代表B,AMI、HDB3编码正确。
