1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > AMI与HDB3的matlab实现

AMI与HDB3的matlab实现

时间:2023-06-07 23:55:45

相关推荐

AMI与HDB3的matlab实现

本程序主要是实现AMI与HDB3编码规则的实现,由于自己编写的时间长了,现在无法检验,读者自己弄吧。

clear all;

a=input('请输入序列= ');

a_num=length(a);

a_ami=a;

a_sign=-1;

for i=1:a_num

if a(i)==0

continue;

elseif a(i)==1&a_sign==-1

a_ami(i)=-a(i);

a_sign=1;

elseif a(i)==1&a_sign==1

a_ami(i)=a(i);

a_sign=-1;

end

end

%the part of painting

AMIandHDB3paint(a_num,a_ami,1,'AMI');

%the part of HDB3

a_sign=-1; %先是按照负极性进行编码,即原初始位为‘1’,

a_hdb3=0; %则HDB3码的初始位为‘-1’

a_hdb3=0;

a_ov=0;

i=1;c=0;

for j=1:a_num

if i+3<=a_num

if sum(a([i:i+3]))==0

a_ov=a_ov+1;

if mod(a_ov,2)==1

a_hdb3(i+3)=-1;

a_sign=1;

if a_hdb3(i+3)~=a_hdb3(i-1);

a_hdb3(i)=a_hdb3(i+3);

end

elseif mod(a_ov,2)==0

a_hdb3(i+3)=1;

a_sign=-1;

if a_hdb3(i+3)~=a_hdb3(i-1);

a_hdb3(i)=a_hdb3(i+3);

end

end

i=i+4;c=1;

end

end

if c==1

c=0; continue;

end

if a(i)==0

i=i+1;continue;

elseif a(i)==1&a_sign==-1

a_hdb3(i)=-a(i);

a_sign=1; i=i+1;

elseif a(i)==1&a_sign==1

a_hdb3(i)=a(i);

a_sign=-1; i=i+1;

end

if i>a_num

break;

end

end

%the part of painting

AMIandHDB3paint(a_num,a_hdb3,2,'HDB3');

%本程序是对AMIcodeANDHDB3code.m 模块化的尝试;

%主要是将计算程序与画图程序分隔开来;

function AMIandHDB3paint(a_num,a_matrix,n,a_name)

%the part of painting

t0=25;

t=0:1/t0:a_num;

a_paint=0;

for i=1:a_num

for j=1:t0

a_paint=[a_paint a_matrix(i)];

end

end

t=[t a_num+1/t0];

a_paint=[a_paint,0];

subplot(2,1,n);

plot(t,a_paint,'LineWidth',2);grid minor;

axis([-0.05 a_num+0.05 -1.05 1.05]);

title([num2str(a_name),'输出波形']);

xlabel([num2str(a_name),'输出序列= ',[num2str(a_matrix)]]);

disp([num2str(a_name),'输出序列= ',num2str(a_matrix)]);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。