m_sequence.txt

来自「matlab生成m序列的函数 原来那个效率太低」· 文本 代码 · 共 27 行

TXT
27
字号
matlab生成m序列的函数
原来那个效率太低,主要是因为实际应用并不需要生成太长的m序列,加入了需求长度,能有效减少运行时间。25级的移位寄存器,运行了一个小时都没有出来一周期,我仅仅需要三千bit而已。改进版:
 
function [seq]=mseq(connections,registers,len);
%***************************************************
% 此函数用来生成最大长度线性移位寄存器序列
% connections为特征多项式向量,registers为初始值向量
% len为所需序列长度,若为0则输出一个周期
%***************************************************
m=length(connections);
L=2^m-1;     %周期长度
if len==0
    len=L;
end
fan=0;
for i=1:len
    seq(i)=registers(m);
    for j=1:m
        fan=fan +connections(j)*registers(j);
        fan=(mod(fan,2));
    end
    for t=m:-1:2  %寄存器移位
        registers(t)=registers(t-1);
    end
    registers(1)=fan;
    fan=0;
end

⌨️ 快捷键说明

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