%%%产生m序列
function[seq]=mseq(connections,registers,len)%registers为寄存器初值序列,connections为各个寄存器的反馈连接取值序列(0/1)(不包括第一个寄存器)
m=length(connections);
L=2^m-1;%m序列周期长度
if len==0
len=L;%len需要输出序列的长度
end
fan=0;
for i=1:len
seq(i)=registers(m);%seq(i)为输出(第m个寄存器的值)
for j=1:m
fan=fan+connections(j)*registers(j);
fan=(mod(fan,2));%fan为第一个寄存器移位输入1或0
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1);
end
registers(1)=fan;
fan=0;
end
function[seq]=mseq(connections,registers,len)%registers为寄存器初值序列,connections为各个寄存器的反馈连接取值序列(0/1)(不包括第一个寄存器)
m=length(connections);
L=2^m-1;%m序列周期长度
if len==0
len=L;%len需要输出序列的长度
end
fan=0;
for i=1:len
seq(i)=registers(m);%seq(i)为输出(第m个寄存器的值)
for j=1:m
fan=fan+connections(j)*registers(j);
fan=(mod(fan,2));%fan为第一个寄存器移位输入1或0
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1);
end
registers(1)=fan;
fan=0;
end