通信原理;利用MATLAB实现AMI/HDB3编译码
作者:互联网
一.实验设备
PC机
MATLAB软件
二.实验目的
- 了解二进制单极性码变换为AMI码的编码规则;
- 熟悉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