成语大全网 - 成语词典 - 怎么用MATLAB实现HDB3码的编码

怎么用MATLAB实现HDB3码的编码

function y=hdb3(x)

%HDB3码

% 输入x为信息代码,输出y为相应的HDB3码

n=length(x);

y=zeros(1,n);

last_y=-1;

%设定初始参考值

last_v=-1;

zero_flag=0;

for i=1:n

if(x(i)==1)

y(i)=-last_y;

last_y=y(i);

zero_flag=0;

else

y(i)=0;

zero_flag=zero_flag+1;

end

if(zero_flag==4)

if(last_y==last_v)

y(i-3)=-last_y;

y(i)=y(i-3);

last_y=y(i);

last_v=y(i);

else

y(i)=last_y;

last_y=y(i);

last_v=y(i);

end

zero_flag=0;

end

end

%%%%%%%%%%%%%%%%% 以下绘制波形 %%%%%%%%%%%%%%%%%

t0=100;

t=0:1/t0:length(x);

for i=1:length(x)

for

j=1:t0

h((i-1)*t0+j)=y(i);

%把等式右边改为(y(i)==1)可以绘制HDB3正极性编码+H

%把等式右边改为-(y(i)==-1)可以绘制HDB3负极性编码-H

end

end

h=[h,h(i*t0)];

M=max(h);

m=min(h);

figure();

subplot(411)

plot(t,zeros(1,length(t)),'LineWidth',1);hold on

plot(t,h,'LineWidth',2);

set(gca,'Xtick',[0:1:length(x)],'Ytick',[0,1])

grid on

box

axis([0 i m-.1 M+.1]);

title('HDB3');