function [seq]=mseq(coef)
%==========================================================================
%此函数用来生成最大长度m序列
% coef为特征多项式向量
%==========================================================================
if 1 == length(coef) % 此时直接输入的是8进制的反馈系数,需要准换成2进制
coef = prepro(coef); end if sum(coef>1) % 如果转换出错,或者输入的时候虽然是个数组,但不是二进制的
error('WRONG! the parameter of function mseq is invalid!');
end
m=length(coef);
len=2^m-1; % 得到序列的长度
backQ=0; % 对应寄存器运算后的值,放在第一个寄存器
seq=zeros(1,len); % 给生成的m序列预分配
registers = [1 zeros(1, m-2) 1]; % 给寄存器分配初始结果
for i=1:len seq(i)=registers(m);
backQ = mod(sum(coef.*registers) , 2);
registers(2:length(registers)) = registers(1:length(registers)-1);
registers(1)=backQ;
end
end
评论0