二元码,三元码调制解调

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=400;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for i=1:length(data)
    if data(i)==1
         for j=1:t0
            y((i-1)*t0+j)=1;
         end
       
    else
        for j=1:t0
           y((i-1)*t0+j)=0;
        end
    end     
end
figure(1);
subplot(1,1,1)
y1=[y data(i)];
plot(t1,y1);
title('单极性非归零码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')


data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for i=1:length(data)
    if data(i)==1
         for j=1:t0
            y((i-1)*t0+j)=1;
         end
       
    else
        for j=1:t0
           y((i-1)*t0+j)=0;
        end
    end     
end
figure(2)
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,2*y1-1);
title('双极性非归零码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

for i=1:length(data)
    if data(i)==1
         for j=1:t0
            y((i-1)*t0+j)=1;
         end
       
    else
        for j=1:t0
           y((i-1)*t0+j)=0;
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('双极性非归零码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')


data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for i=1:length(data)
    if data(i)==1
        for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=1;
            y((2*i-1)*t0/2+j)=0;
        end
else
        for j=1:t0
            y((i-1)*t0+j)=0;
        end
    end     
end
figure(3);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('单极性归零码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

for i=1:length(data)
    if y((2*i-2)*t0/2+t0/4)==1&&y((2*i-1)*t0/2+t0/4)==0
        for j=1:t0
            y((i-1)*t0+j)=1; 
        end
else
        for j=1:t0
            y((i-1)*t0+j)=0;
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('单极性归零码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for i=1:length(data)
    if data(i)==1
        for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=1;
            y((2*i-1)*t0/2+j)=0;
        end
else
       for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=-1;
            y((2*i-1)*t0/2+j)=0;
        end
    end     
end
figure(4);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('双极性归零码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==1&&y((2*i-1)*t0/2+t0/4)==0
        for j=1:t0
            y((i-1)*t0+j)=1;
        end
else
       for j=1:t0
           y((i-1)*t0+j)=0; 
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('双极性归零码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);

for j=1:t0
    y(j)=1;
end
for i=2:length(data)
    if (data(i)~=y((i-1)*t0))
         for j=1:t0
            y((i-1)*t0+j)=1;
        end
        
    else
        for j=1:t0
            y((i-1)*t0+j)=0;
        end
    end
end
figure(5);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('传号差分码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')
yx=1/t0:1/t0:length(data);
for j=1:t0
    yx(j)=1;
end
for i=2:length(data)

    if y((i-1)*t0+t0/2)==0
         for j=1:t0
            yx((i-1)*t0+j)=y((i-2)*t0+t0/2);
        end
        
    else
        for j=1:t0
            if  y((i-2)*t0+t0/2)==0
            yx((i-1)*t0+j)=1;
            else
            yx((i-1)*t0+j)=0;
            end
                
        end
    end
end
subplot(2,1,2)
y1=[yx yx((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('传号差分码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);

for j=1:t0
    y(j)=0;
end
for i=2:length(data)
    if (data(i)~=y((i-1)*t0))
         for j=1:t0
            y((i-1)*t0+j)=0;
        end
        
    else
        for j=1:t0
            y((i-1)*t0+j)=1;
        end
    end
end
figure(6);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('空号差分码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

yx=1/t0:1/t0:length(data);
for j=1:t0
    yx(j)=1;
end
for i=2:length(data)

    if y((i-1)*t0+t0/2)==1
         for j=1:t0
            yx((i-1)*t0+j)=y((i-2)*t0+t0/2);
        end
        
    else
        for j=1:t0
            if  y((i-2)*t0+t0/2)==0
            yx((i-1)*t0+j)=1;
            else
            yx((i-1)*t0+j)=0;
            end
                
        end
    end
end
subplot(2,1,2)
y1=[yx yx((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('空号差分码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')


data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for i=1:length(data)
    if data(i)==1
        for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=-1;
            y((2*i-1)*t0/2+j)=1;
        end
else
       for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=1;
            y((2*i-1)*t0/2+j)=-1;
        end
    end     
end
figure(7);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('数字双相码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==-1&&y((2*i-1)*t0/2+t0/4)==1
        for j=1:t0
           y((i-1)*t0+j)=1;
        end
else
       for j=1:t0
           y((i-1)*t0+j)=0;
            
        end
    end     
end
figure(7);
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('数字双相码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
for j=1:t0/2
    y(j)=-1;
end
for j=t0/2+1:t0
    y(j)=1;
end

for i=2:length(data)
    if data(i)==1
         for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=y((i-2)*t0+3/4*t0);
            y((2*i-1)*t0/2+j)=-y((i-2)*t0+3/4*t0);
          end        
    
       
    else
       if(data(i-1)==1)
            for j=1:t0
               y((i-1)*t0+j)=y((i-2)*t0+3/4*t0);
            end 
       end
       if(data(i-1)==0)
           for j=1:t0
               y((i-1)*t0+j)=-y((i-2)*t0+t0/2);
           end
       end        
    end     
end
figure(8);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('密勒码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')
for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==-1&&y((2*i-1)*t0/2+t0/4)==1||y((2*i-2)*t0/2+t0/4)==1&&y((2*i-1)*t0/2+t0/4)==-1
        for j=1:t0
           y((i-1)*t0+j)=1;
        end
else
       for j=1:t0
           y((i-1)*t0+j)=0;
            
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('密勒码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 1 0 1 0 0 0 1 1 0 0 1 0];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
s=1;
for j=1:t0
    y(j)=1;
end
for i=2:length(data)
    if data(i)==1
        s=0-s;
        for j=1:t0
           y((i-1)*t0+j)=s;
        end
    else
       for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=-1;
            y((2*i-1)*t0/2+j)=1;
        end
    end
end
figure(9);
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('信号反转码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==-1&&y((2*i-1)*t0/2+t0/4)==1
        for j=1:t0
           y((i-1)*t0+j)=0;
        end
else
       for j=1:t0
           y((i-1)*t0+j)=1;
            
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('信号反转码解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')


data=[1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);
s=1;
for j=1:t0/2
    y(j)=1;
end
for j=t0/2+1:t0
    y(j)=0;
end
for i=2:length(data)
    if data(i)==1
        s=0-s;
        for j=1:t0/2
           y((2*i-2)*t0/2+j)=s;
           y((2*i-1)*t0/2+j)=0;
        end
    else
       for j=1:t0
            y((i-1)*t0+j)=0;
        end
    end
end
figure(10);
subplot(2,1,1)
y1=[y y(13*t0+3/4*t0)];
plot(t1,y1);
title('AMI码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')
for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==0&&y((2*i-1)*t0/2+t0/4)==0
        for j=1:t0
           y((i-1)*t0+j)=0;
        end
else
       for j=1:t0
           y((i-1)*t0+j)=1;
            
        end
    end     
end
subplot(2,1,2)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('AMI解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')

data=[1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1];
t0=200;
t1=0:1/t0:length(data);  %给出相应的时间序列
y=1/t0:1/t0:length(data);  
cnt_0 = 0; %记录连续0的个数
cnt_1=0;
s=1;
for i=1:length(data)
    if(data(i)==0)
        cnt_0=cnt_0+1;
        for j=0:t0
            y((i-1)*t0+j)=0;
        end
        if(cnt_0 >= 4)
            cnt_0=0;
            if(rem(cnt_1,2)==1)
                 cnt_1=0;
                 for j=1:(t0/2)
                y((2*i-2)*t0/2+j)=-s;
                y((2*i-1)*t0/2+j)=0;
                 end
            else
                cnt_1=0;
                for j=1:(t0/2)
                y((2*(i-3)-2)*t0/2+j)=s;
                y((2*(i-3)-1)*t0/2+j)=0;   
                y((2*i-2)*t0/2+j)=s;
                y((2*i-1)*t0/2+j)=0;
                end
                s=-s;
            end
        end
    else
         for j=1:(t0/2)
            y((2*i-2)*t0/2+j)=s;
            y((2*i-1)*t0/2+j)=0;
         end
            s=-s; 
            cnt_0=0;
            cnt_1=cnt_1+1;
    end                        
end
figure(11)
subplot(2,1,1)
y1=[y y((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('HDB3码');
axis([0,i,-1.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')
s=1;
for i=1:length(data)
    if  y((2*i-2)*t0/2+t0/4)==0
        for j=1:t0
           yx((i-1)*t0+j)=0;
        end
    elseif (y((2*i-2)*t0/2+t0/4)==-s)
        for j=1:t0
           yx((i-1)*t0+j)=0;
        end
        if i>4&&y((i-4)*t0+t0/4)~=0
           for j=1:t0
           yx((i-4)*t0+j)=0;
           end  
        end
        
     else
       for j=1:t0
           yx((i-1)*t0+j)=1;
       end
         s=-s;
    end     
end
subplot(2,1,2)
y1=[yx yx((i-1)*t0+3/4*t0)];
plot(t1,y1);
title('HDB3解码');
axis([0,i,-0.1,1.1]);
xlabel('时间 t/s')
ylabel('幅度A')


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值