本文共 2974 字,大约阅读时间需要 9 分钟。
function mseq = mseq(fbconnection)n=length(fbconnection);N=2^n-1;register=[zeros(1,n-1) 1]; %移位寄存器的初始状态mseq(1)=register(n); %m序列的第一个输出码元for i=2:N newregister(1)=mod(sum(fbconnection.*register),2); for j=2:n newregister(j)=register(j-1); end; register=newregister; mseq(i)=register(n);end
如7级m序列的反馈系数(203)8转换为二进制,为(10000011)2,此时在命令行中输入:
m = mseq([1 0 0 0 0 0 1 1]);
得到输出:
m = 列 1 至 13 1 0 0 0 0 0 0 0 1 1 1 1 1 列 14 至 26 1 1 0 0 0 0 0 0 0 1 1 1 1 列 27 至 39 1 1 1 0 0 0 0 0 0 0 1 1 1 列 40 至 52 1 1 1 1 0 0 0 0 0 0 0 1 1 列 53 至 65 1 1 1 1 1 0 0 0 0 0 0 0 1 列 66 至 78 1 1 1 1 1 1 0 0 0 0 0 0 0 列 79 至 91 1 1 1 1 1 1 1 0 0 0 0 0 0 列 92 至 104 0 1 1 1 1 1 1 1 0 0 0 0 0 列 105 至 117 0 0 1 1 1 1 1 1 1 0 0 0 0 列 118 至 130 0 0 0 1 1 1 1 1 1 1 0 0 0 列 131 至 143 0 0 0 0 1 1 1 1 1 1 1 0 0 列 144 至 156 0 0 0 0 0 1 1 1 1 1 1 1 0 列 157 至 169 0 0 0 0 0 0 1 1 1 1 1 1 1 列 170 至 182 0 0 0 0 0 0 0 1 1 1 1 1 1 列 183 至 195 1 0 0 0 0 0 0 0 1 1 1 1 1 列 196 至 208 1 1 0 0 0 0 0 0 0 1 1 1 1 列 209 至 221 1 1 1 0 0 0 0 0 0 0 1 1 1 列 222 至 234 1 1 1 1 0 0 0 0 0 0 0 1 1 列 235 至 247 1 1 1 1 1 0 0 0 0 0 0 0 1 列 248 至 255 1 1 1 1 1 1 0 0
为255位的m序列。
mseq([1 0 0 0 0 0 1 1]);中的输入1 0 0 0 0 0 1 1代表各寄存器的初始状态,即本原多项式D7+D6+D5+D4+D3+D2+D1+1中各项的系数。选用不同的初始状态值对应不同的本原多项式,也会得到不同的m序列。
如果选用D7+D3+1,则只需调用mseq([0 0 1 0 0 0 1]),即可得到对应的m序列。
可以通过*primpoly()*函数获得n阶m序列的所有本原多项式:
primpoly(n,'all');
例:输入primpoly(8,‘all’),则输出为:
Primitive polynomial(s) = D^8+D^4+D^3+D^2+1D^8+D^5+D^3+D^1+1D^8+D^5+D^3+D^2+1D^8+D^6+D^3+D^2+1D^8+D^6+D^4+D^3+D^2+D^1+1D^8+D^6+D^5+D^1+1D^8+D^6+D^5+D^2+1D^8+D^6+D^5+D^3+1D^8+D^6+D^5+D^4+1D^8+D^7+D^2+D^1+1D^8+D^7+D^3+D^2+1D^8+D^7+D^5+D^3+1D^8+D^7+D^6+D^1+1D^8+D^7+D^6+D^3+D^2+D^1+1D^8+D^7+D^6+D^5+D^2+D^1+1D^8+D^7+D^6+D^5+D^4+D^2+1ans = 285 299 301 333 351 355 357 361 369 391 397 425 451 463 487 501
另附:部分m序列的反馈系数表
参考文献:
转载地址:http://ujugf.baihongyu.com/