通信技术基础实验

2018-11-08  本文已影响0人  SnorlaxSE

基带编码(数字编码技术)

xn=[1 0 1 1 0 0 0 1 1];% 输入单极性码
yn=xn;% 输出yn初始化
num=0;% 计数器初始化
for k=1:length(xn)
   if xn(k)==1
      num=num+1;                % "1"计数器
         if mod(num,2)==1 % 奇数个1时输出-1,进行极性交替
              yn(k)=-1;
         else
              yn(k)=+1;
         end
   end
end                   % 以上部分完成AMI码编码
subplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);grid on;
subplot(2,1,2);stairs([0:length(xn)-1],yn);axis([0 length(xn) -2 2]);grid on;
xn=[1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0];% 输入单极性码
yn=xn;% 输出yn初始化
num=0;% 计数器初始化
for k=1:length(xn)
   if xn(k)==1
      num=num+1;                % "1"计数器
         if num/2 == fix(num/2) % 奇数个1时输出-1,进行极性交替
              yn(k)=-1;
         else
              yn(k)=1;
         end
   end
end   
subplot(3,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]); grid on;
subplot(3,1,2);stairs([0:length(xn)-1],yn);axis([0 length(xn) -2 2]); grid on;
% HDB3编码 
num=0;  % 连零计数器初始化 
yh=yn;  % 输出初始化 
sign=0; % 极性标志初始化为0 
V=0;% V脉冲位置记录变量  
B=0;% B脉冲位置记录变量 
for k=1:length(yn)    
    if yn(k)==0        
        num=num+1;  % 连“0”个数计数        
        if num==4   % 如果4连“0”          
            num=0;    % 计数器清零 
            yh(k)=1*yh(k-4);              % 让0000的最后一个0改变为与前一个非零符号相同极性的符号          
            V=yh(k);        % V脉冲位置记录          
            if yh(k)==sign     % 如果当前V符号与前一个V符号的极性相同             
                yh(k)=-1*yh(k); % 则让当前V符号极性反转,以满足V符号间相互极性反转要求             
                yh(k-3)=yh(k);  % 添加B符号,与V符号同极性       
                B=yh(k-3);   % B脉冲位置记录             
                V=yh(k);     % V脉冲位置记录             
                yh(k+1:length(yn))=-1*yh(k+1:length(yn));   % 并让后面的非零符号从V符号开始再交替变化          
            end
          sign=yh(k);          % 记录前一个V符号的极性
        end
    else
        num=0;                % 当前输入为“1”则连“0”计数器清零   
    end
end                         % 编码完成

subplot(3,1,3);stairs([0:length(xn)-1],yh);axis([0 length(xn) -2 2]); grid on;
clear all
close all
xn=[0 1 0 0 1 1 0 0 0 1 1];
t=0:1/2:length(xn);
for i=1:length(xn)
    if(xn(i)==1)   %manchester code "1"
            yn(2*i-1)=-1;
            yn(2*i)=1;
    else           %manchester code "0"
            yn(2*i-1)=1;
            yn(2*i)=-1;
    end
end
subplot(2,1,1);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]); grid on;
subplot(2,1,2); yn=[yn,xn(i)];  stairs(t,yn);axis([0 length(xn) -2 2]); grid on;
上一篇 下一篇

猜你喜欢

热点阅读