📄 hdb3.m
字号:
function x_HDB3=HDB3(x,Previous_s,Previous_v)
N=length(x);
x_HDB3=zeros(1,N);
%initial the register:
%Previous_s:前一非零符号的极性;Previous_v:前一破坏点的极性;
%Previous_s=-1;Previous_v=-1;
i=1;
while(i<=N-3)
if(x(i)==1)
x_HDB3(i)=-1*Previous_s;
Previous_s=x_HDB3(i);
i=i+1;
elseif(x(i)==0)
if(x(i+1)==1)
x_HDB3(i)=0;x_HDB3(i+1)=-1*Previous_s;
Previous_s=x_HDB3(i+1);
i=i+2;
elseif(x(i+1)==0)
if(x(i+2)==1)
x_HDB3(i)=0;x_HDB3(i+1)=0;x_HDB3(i+2)=-1*Previous_s;
Previous_s=x_HDB3(i+2);
i=i+3;
elseif(x(i+2)==0)
if(x(i+3)==1)
x_HDB3(i)=0;x_HDB3(i+1)=0;x_HDB3(i+2)=0;x_HDB3(i+3)=-1*Previous_s;
Previous_s=x_HDB3(i+3);
i=i+4;
elseif(x(i+3)==0)
%here deal with the four zeros groups
if(Previous_s==1 & Previous_v==1)
x_HDB3(i)=-1;x_HDB3(i+1)=0;x_HDB3(i+2)=0;x_HDB3(i+3)=-1;Previous_s=x_HDB3(i+3);Previous_v=x_HDB3(i+3);i=i+4;
elseif(Previous_s==-1 & Previous_v==-1)
x_HDB3(i)=1;x_HDB3(i+1)=0;x_HDB3(i+2)=0;x_HDB3(i+3)=1;Previous_s=x_HDB3(i+3);Previous_v=x_HDB3(i+3);i=i+4;
elseif(Previous_s==-1 & Previous_v==1)
x_HDB3(i)=0;x_HDB3(i+1)=0;x_HDB3(i+2)=0;x_HDB3(i+3)=-1;Previous_s=x_HDB3(i+3);Previous_v=x_HDB3(i+3);i=i+4;
elseif(Previous_s==1 & Previous_v==-1)
x_HDB3(i)=0;x_HDB3(i+1)=0;x_HDB3(i+2)=0;x_HDB3(i+3)=1;Previous_s=x_HDB3(i+3);Previous_v=x_HDB3(i+3);i=i+4;
end
end
end
end
end
end
for j=i:1:N
if(x(j)==1)
x_HDB3(j)=-1*Previous_s;Previous_s=x_HDB3(j);
elseif(x(j)==0)
x_HDB3(j)=0;
end
end
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -