mseq.m

来自「kuanjiange_seq.m 基于对偶频带法和m序列」· M 代码 · 共 52 行

M
52
字号
% Program 5-3
% mseq.m
%
% The generation function of m-sequence
%
% An example
%    stg     = 3
%    taps    = [ 1 , 3 ]
%    inidata = [ 1 , 1 , 1 ]
%    n       = 2
%
% Programmed by M.Okita and H.Harada
%

function [mout] = mseq(stg, taps, inidata, n)

% ****************************************************************
% stg     : Number of stages
% taps    : Position of register feedback
% inidata : Initial sequence
% n       : Number of output sequence(It can be omitted)
% mout    : output M sequence
% ****************************************************************

if nargin < 4                            % nargin : input number
    n = 1;                               % 
end

mout = zeros(n, 2^stg-1);                 
fpos = zeros(stg, 1);                    % fpos = [0;0;0];

fpos(taps) = 1;                          % such as taps = [1,3]; fpos(taps) = [1,0,1]

for ii = 1:2^stg-1
    
    mout(1,ii) = inidata(stg);           % storage of the output data
    
    num = mod(inidata*fpos,2);           % calculation of the feedback data
    
    inidata(2:stg) = inidata(1:stg-1);   % one shifts the register
    
    inidata(1)     = num;                % return feedback data
    
end

if n > 1
    for ii = 2:n
        mout(ii,:) = shift(mout(ii-1,:),1,0);
    end
end

%******************************** end of file ********************************

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?