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

传真(Fax)编程

开发平台:

Matlab

  1. % Program 5-3
  2. % mseq.m
  3. %
  4. % The generation function of M-sequence
  5. %
  6. % An example
  7. %    stg     = 3
  8. %    taps    = [ 1 , 3 ]
  9. %    inidata = [ 1 , 1 , 1 ]
  10. %    n       = 2
  11. %
  12. % Programmed by M.Okita and H.Harada
  13. %
  14. function [mout] = mseq(stg, taps, inidata, n)
  15. % ****************************************************************
  16. % stg     : Number of stages
  17. % taps    : Position of register feedback
  18. % inidata : Initial sequence
  19. % n       : Number of output sequence(It can be omitted)
  20. % mout    : output M sequence
  21. % ****************************************************************
  22. if nargin < 4
  23.     n = 1;
  24. end
  25. mout = zeros(n,2^stg-1);
  26. fpos = zeros(stg,1);
  27. fpos(taps) = 1;
  28. for ii=1:2^stg-1
  29.     
  30.     mout(1,ii) = inidata(stg);                      % storage of the output data
  31.     num        = mod(inidata*fpos,2);               % calculation of the feedback data
  32.     
  33.     inidata(2:stg) = inidata(1:stg-1);              % one shifts the register
  34.     inidata(1)     = num;                           % return feedback data
  35.     
  36. end
  37. if n > 1
  38.     for ii=2:n
  39.         mout(ii,:) = shift(mout(ii-1,:),1,0);
  40.     end
  41. end
  42. %******************************** end of file ********************************