rsc_encode.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function y = rsc_encode(g, x, terminated)
  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 terminated>0, the trellis is perfectly terminated
  9. % if terminated<0, it is left unterminated;
  10. % determine the constraint length (K), memory (m), and rate (1/n)
  11. % and number of information bits.
  12. [n,K] = size(g);
  13. m = K - 1;
  14. if terminated>0
  15.   L_info = length(x);
  16.   L_total = L_info + m;
  17. else
  18.   L_total = length(x);
  19.   L_info = L_total - m;
  20. end  
  21. % initialize the state vector
  22. state = zeros(1,m);
  23. % generate the codeword
  24. for i = 1:L_total
  25.    if terminated<0 | (terminated>0 & i<=L_info)
  26.       d_k = x(1,i);
  27.    elseif terminated>0 & i>L_info
  28.       % terminate the trellis
  29.       d_k = rem( g(1,2:K)*state', 2 );
  30.    end
  31.  
  32.    a_k = rem( g(1,:)*[d_k state]', 2 );
  33.    [output_bits, state] = encode_bit(g, a_k, state);
  34.    % since systematic, first output is input bit
  35.    output_bits(1,1) = d_k;
  36.    y(n*(i-1)+1:n*i) = output_bits;
  37. end