zoukankan      html  css  js  c++  java
  • matlab AMI HDB3编解码 k

    clear all,clc
    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
    %AMI码的解码,对AMI码全波整流即可实现解码
    decodeAMI =abs(yn);
    %HDB3编码
    num = 0; %连零计算器的初始化
    yh = yn; %输出初始化
    sign = 0; %极性标志初始化为0
    V = zeros(1,length(yn)); %V脉冲位置记录变量
    B = zeros(1,length(yn)); %B脉冲记录位置变量
    for k = 1:length(yn)
    if yh(k) == 0
    num = num+1;
    if num == 4
    num = 0; %如果连续4个为零,计数器清零
    yh(k) = 1*yh(k-4);
    V(k) = yh(k);
    if yh(k) == sign %如果当前V符号与前一个V符号的极性相同
    yh(k) = -1*yh(k);
    yh(k-3) = yh(k);
    B(k-3) = yh(k);
    V(k) = yh(k);
    %让后面的非零符号从V符号开始再交替变化
    yh(k+1:length(yn)) = (-1)*yh(k+1:length(yn));
    end
    sign = yh(k);
    end
    else
    num = 0;
    end
    end
    re = [xn',yn',yh',V',B']; %输出结果:xn,AMI,HDB3,V&B
    %HDB3解码
    input = yh;
    decode = input;
    sign = 0; %极性标志初始化
    for k = 1:length(yh)
    if input(k)~=0
    if sign == yh(k)
    docede(k-3:k) = [0 0 0 0 ];
    end
    sign = input(k)
    end
    end
    decode = abs(decode); %整流
    error = sum([xn'-decode']);
    %AMI,HDB3编解码图
    figure(1);
    stairs([0:length(xn)-1],xn);
    axis([0 length(xn) -2 2]);
    title('Xn的单极性不归零波形');

    figure(2);
    subplot(2,1,1);
    stairs([0:length(xn)-1],yn);
    axis([0 length(xn) -2 2]);
    title('AMI码的编码波形');
    subplot(2,1,2);
    stairs([0:length(xn)-1],decodeAMI);
    axis([0 length(xn) -2 2]);
    title('AMI码的解码波形');

    figure(3);
    subplot(2,1,1);
    stairs([0:length(xn)-1],yh);
    axis([0 length(xn) -2 2]);
    title('AHDB3码的编码波形');
    subplot(2,1,2);
    stairs([0:length(xn)-1],decode);
    axis([0 length(xn) -2 2]);
    title('HDB#码的解码波形');

  • 相关阅读:
    chown
    [NOI2010]航空管制
    批量kill 某个用户session
    【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树
    找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程
    [NOI2016]优秀的拆分
    Oracle12C查询自建用户(非系统自带)
    查询包含某个字段的表
    [WC2011]最大XOR和路径
    监控慢SQL
  • 原文地址:https://www.cnblogs.com/ksheep/p/2748753.html
Copyright © 2011-2022 走看看