您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > Matlab实现AMI码、HDB3码
Matlab进行AMI码、HDB3码的编码clearclca=20;%a表示元素个数,可以修改码元为任意个数如1024r=unidrnd(2,1,a-1);%随机产生离散均匀二值分布(1,2),共a-1个rn=r-1;%每个元素减1变为(0,1)二值随机数列rn=[1,rn];%跟书上一致,从1开始随机产生离散均匀二值分布(1,2),共a个ori=rn;%将原序列保存起来,便于后面解码后比较oril=1;forn=1:aifrn(n)==1;l=-l;%每检测到一个1变一次符号rn(n)=l;endendAMI=rn;%变为AMI码:每过一个1就使原来的1变一次号AMIm=-1;%符号初始化fork=1:a-3ifabs(rn(k))==1m=rn(k);%m记录可能存在的连续4个0前面非零码元的符号endifrn(k)==0ifrn(k+1)==0ifrn(k+2)==0ifrn(k+3)==0%检测是否连续4个码元都是0rn(k+3)=2*m;%用2表示书上的Vendendendendendrn;l=1;%l=1表示两个V之间有偶数个非零码fors=1:aifabs(rn(s))==2ford=s+1:aifabs(rn(d))==1%V之间的非零码只有+1,-1遇到一个一使l变一次号,表示偶数或奇数l=-l;endifabs(rn(d))==2ifl~=1l=1;%不需要插入B时若检测到V也应把计数器清零%最初版本的升级处1else%检测到下一个V时,若为偶数个,则插入Brn(d-3)=3*(-(rn(d-4))/(abs(rn(d-4))));%3代表B,插入不带符号的Brn(d:a)=-rn(d:a);end%V后的符号再交替endendendendrn;%到此处完成了插入不带符号的BHDB3=rn;%给B(3)添加了符号,并且实现了V后的符号再交替HDB3运行结果:ori=Columns1through18111001100000000010Columns19through2010AMI=Columns1through18-11-1001-100000000010Columns19through20-10HDB3=Columns1through18-11-1001-1000-230020-10Columns19through20102代表V,3代表B,AMI、HDB3编码正确。
本文标题:Matlab实现AMI码、HDB3码
链接地址:https://www.777doc.com/doc-7253971 .html