文档库 最新最全的文档下载
当前位置:文档库 › 现代通信原理的AMI码与HDB3码的MATLAB代码

现代通信原理的AMI码与HDB3码的MATLAB代码

现代通信原理的AMI码与HDB3码的MATLAB代码
现代通信原理的AMI码与HDB3码的MATLAB代码

function y =ami(x)

%AMI码

t0=300;

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

k=0;

for i=1:length(x)

if(x(i)==1)

k=k+1;

if(mod(k,2)==1) %x(i)若为奇数则从1到0,为偶数则从-1到0;

for j=1:t0/2

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

y(t0/2*(2*i-1)+j)=0;

end

else

for j=1:t0/2

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

y(t0/2*(2*i-1)+j)=0;

end

end

else

for j=1:t0/2

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

end

end

end

y=[y,x(i)];

M=max(y);

m=min(y);

subplot(211)

plot(t,y);grid on;

axis([0,i,m-0.1,M+0.1]);

title({'AMI码';'1 0 0 1 1 0 0 0 0 1 0 1'});

function y=hdb3(x)

%HDB3码

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

n=length(x);

m=zeros(1,n);

%设定初始参考值

last_y=-1;

last_v=1;%若前一点为V-,则last_v=-1;为V+,则last_v=1。zero_flag=0;

%开始变换

for i=1:n

if(x(i)==1)

m(i)=-last_y;

last_y=m(i);

zero_flag=0;

else

m(i)=0;

zero_flag=zero_flag+1;

end

if(zero_flag==4)

if(last_y==last_v)

m(i-3)=-last_y;

m(i)=m(i-3);

last_y=m(i);

last_v=m(i);

else

m(i)=last_y;

last_y=m(i);

last_v=m(i);

end

zero_flag=0;

end

end

%以下绘制波形

t0=300;

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

for i=1:length(m)

if(m(i)==1)

for j=1:t0/2

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

y(t0/2*(2*i-1)+j)=0;

end

end

if(m(i)==-1)

for j=1:t0/2

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

y(t0/2*(2*i-1)+j)=0;

end

end

if(m(i)==0)

for j=1:t0/2

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

end

end

end

y=[y,m(i)];

M=max(y);

m1=min(y);

subplot(211)

plot(t,y);grid on;

axis([0,i,m1-0.1,M+0.1]);

%下面的title视情况选V-或V+。

title({'前一破坏点为V+的HDB3码';'1 0 0 1 1 0 0 0 0 1 0 1'});

相关文档