rsc_encode.m
上传用户:hnyfjx
上传日期:2013-06-30
资源大小:2149k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function y = rsc_encode(g, x, end1)
  2. % Copyright Nov. 1998 Yufei Wu
  3. % MPRG lab, Virginia Tech.
  4. % for academic use only
  5. % encodes a block of data x (0/1)with a recursive systematic
  6. % convolutional code with generator vectors in g, and
  7. % returns the output in y (0/1).
  8. % if end1>0, the trellis is perfectly terminated
  9. % if end1<0, it is left unterminated;
  10. % determine the constraint length (K), memory (m), and rate (1/n)
  11. % and number of information bits.
  12. %***********************************************************************
  13. % rsc 编码器
  14. % 输入 
  15. %     g     生成矩阵 
  16. %     x     输入序列
  17. %     endl  尾比特处理标志
  18. %        >0 有 m 个尾比特 编码至 x 最后一个比特到达最后一个寄存器
  19. %        <0 没有尾比特           x 最后一个比特进入编码器
  20. % 输出
  21. %     编码比特 (信息位 校验位1 校验位2 。。校验位n-1 信息位。。。。)
  22. %***********************************************************************
  23. [n,K] = size(g);
  24. m = K - 1;
  25. if end1>0
  26.   L_info = length(x);
  27.   L_total = L_info + m;
  28. else
  29.   L_total = length(x);
  30.   L_info = L_total - m;
  31. end  
  32. %根据endl来决定编码输出
  33. %      >0    增加 m 个尾比特  m为编码器寄存器的数目
  34. %      <0    不加     尾比特
  35. % initialize the state vector
  36. state = zeros(1,m);
  37. % 将编码器的寄存器初始化为全0
  38. % generate the codeword
  39. for i = 1:L_total
  40.    if end1<0 | (end1>0 & i<=L_info)
  41.        % | 或
  42.        % & 与
  43.       d_k = x(1,i);
  44.       % 正常编码
  45.    elseif end1>0 & i>L_info
  46.       % terminate the trellis
  47.       d_k = rem( g(1,2:K)*state', 2 );
  48.       % 尾比特处理,
  49.    end
  50.  
  51.    a_k = rem( g(1,:)*[d_k state]', 2 );
  52.    % a_k 是编码器的第一个寄存器的输入;
  53.    [output_bits, state] = encode_bit(g, a_k, state);
  54.    % since systematic, first output is input bit
  55.    output_bits(1,1) = d_k;
  56.    % 编码比特的第一位是信息位
  57.    y(n*(i-1)+1:n*i) = output_bits;
  58.    % 编码比特 (信息位 校验位1 校验位2 。。校验位n-1 信息位。。。。)
  59. end