其他分享
首页 > 其他分享> > 通信原理;利用MATLAB实现AMI/HDB3编译码

通信原理;利用MATLAB实现AMI/HDB3编译码

作者:互联网

一.实验设备

     PC机

     MATLAB软件


二.实验目的

  1. 了解二进制单极性码变换为AMI码的编码规则;
  2. 熟悉HDB3码的基本特征,编译码原理和实现方法。

三.实验内容:

        利用MATLAB建模产生原码,AMI码,HDB3码波形,熟悉AMI和HDB3码编码译码规则,基本特征.


四.实验原理

        (AMI)双极性码是二进制码,1为反转,0为保持零电平。即其中0不做变化,唯1进行正负交替变化。

        (HDB3)三阶高密度双极性码

                               1、连0的个数不超过3时,规则与AMI相同,即0不变,1变为-1、+1交替;

                               2、若连0的个数超过3,则将每4个0看作一小节,定义为B00V。

                               3、B和V具体值满足以下条件:V和前面相邻非0符号极性相同;不看V时极性交替;V与V之间极性交替;计算机中B,V均用±1来表示


五.实验代码例

xn=[1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1];
tn=xn;
num=0;

%AMI部分
for k=1:length(xn)            %只对1进行变化
    if xn(k)==1
        num=num+1;           %将-1,1归为一组,故从数组第一次数到非零数时,可对应为-1,下一个非零数为1(AMI中)
    if num/2==fix(num/2)
        tn(k)=1;
    else
        tn(k)=-1;
    end
    end
end
decodeAMI=abs(tn);       %解码
figure(1);                         %显示三行,一列图,图一为原码,图二为AMI码,图三为解码;stairs函数用以形成柱状图;axis用以对坐标轴进行一定的缩放操作;具体操作读者自行查阅
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid;
subplot(3,1,2);stairs([0:length(xn)-1],tn);axis([0 length(xn) -2 2]);grid;
subplot(3,1,3);stairs([0:length(xn)-1],decodeAMI);axis([0 length(xn) -2 2]);grid;

%HDB3部分(基于AMI码,读者验证切勿用原码代入)
HDB3=tn;
num1=0;
l1=0;
lv=0;
for i=1:length(xn)
    if HDB3(i)==0
        num1=num1+1;
        if num1==4
            if lv==l1
                HDB3(i)=-l1;
                HDB3(i-3)=-l1;
            else
                HDB3(i)=l1;
            end
            lv=HDB3(i);
            l1=lv;
            num1=0;
        end
    else
        if HDB3(i)==l1
            HDB3(i)=-l1;
        end
        l1=HDB3(i);
        num1=0;
    end
end

decodeHDB3=HDB3;%解码
l1=0;
for i=1:length(xn)
    if decodeHDB3(i)~=0       %不等于
        if decodeHDB3(i)==l1
            l1=decodeHDB3(i);
            for j=0:3
                decodeHDB3(i-j)=0;
            end
        else
            l1=decodeHDB3(i);
        end
    end
end
decodeHDB3=abs(decodeHDB3);

figure(2);
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid;
subplot(3,1,2);stairs([0:length(xn)-1],HDB3);axis([0 length(xn) -2 2]);grid;
subplot(3,1,3);stairs([0:length(xn)-1],decodeHDB3);axis([0 length(xn) -2 2]);grid;

 

标签:AMI,xn,length,MATLAB,l1,end,HDB3
来源: https://blog.csdn.net/qq_58028255/article/details/117300604