您的位置:首页 > 编程语言 > MATLAB

线性移位寄存器序列(m序列)之MATLAB实现

2020-09-01 23:52 1741 查看

移位寄存器的结构

nnn级线性移位寄存器的结构如下图

当生成多项式g(x)g(x)g(x)为本原多项式时,产生的序列为m序列。例如
g(x)=x5+x2+1g(x)=x^5+x^2+1g(x)=x5+x2+1的本原多项式,初态为10000的5级m序列,其周期为25−1=312^5-1=3125−1=31,结构如下图所示。

代码

m序列的性质在此不多赘述,感兴趣的可查阅相关资料,MATLAB生成m序列的代码

function mCode = mCodeGen(polynomial,reg)
% m序列产生器函数
% polynomial为本原多项式次数,如对x^5+x^2+1,polynomial = [5 2 0]
% reg为置寄存器初始值,也相当于PN码的初始相位,如初态为[1 0 0 0 0]时,寄存器初始状态如上图所示

ntap = length(polynomial);
grade = polynomial(1); % 延时级数
mlen = 2^grade-1; % m序列一个周期的长度
mCode = zeros(1,mlen);

% 产生一个周期的PN码
% 寄存器为 0 0 0 0 1 右边输出
for i = 1:mlen
mCode(i)=reg(1);
tap = grade+1-polynomial(1:ntap-1);
m = mod(sum(reg(tap)),2);
reg(1:grade-1) = reg(2:grade);
reg(grade) = m;
end
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: