📄 goldcode.m
字号:
function seq=goldcode(polynoms,num,offset,pnlen,pattern)
% M series generator
% parameters:
% polynom - generation polynomial,2×[x(m),x(m-1)...x(1)]
% example:pn=[1,0,1,0,0;1,1,1,0,1];
% offset - the M series offset from the beginning of a period
% pnlen - pn length to be generated
% pattern - 0:[0,1],1:[-1,1]
global goldseries;
[two,m] = size(polynoms);
period = 2^m -1;
if (num > 2^m)
error('numt must be 0~%d',2^m);
end;
existed = existgold;
if existed == 0
ps = [];
p1 = pnc(polynoms(1,:),2*period);
ps = [ps;p1(1:period)];
p2 = pnc(polynoms(2,:),2*period);
ps = [ps;p2(1:period)];
for off=1:period
p = p2(off:period+off-1)+p1(1:period);
p = p - floor(p/2)*2;
ps = [ps;p];
end;
goldseries = ps;
end;
seq = zeros(1,pnlen);
for i=0:pnlen-1
ii = offset + i;
ii = ii - period*floor(ii/period);
seq(i+1) = goldseries(num,ii+1);
end;
if pattern==1
seq = 2*seq-1;
end;
return;
return;
function e = existgold( )
global goldseries;
if(length(goldseries) > 4) % existed global gold series
e = 1; % gold series has been generated
else
e = 0;
end;
return;
function seq = pnc(polynom,pnlen)
m = length(polynom);
period= 2^m -1;
seq = [1,zeros(1,pnlen-1)];
count= pnlen;
tmpseq = [1,zeros(1,count-1)];% 初始输出为[1000..0]
for i=m+1:count
tmp = tmpseq(i-m:i-1)*(polynom');
tmpseq(i) = tmp - floor(tmp./2)*2; % mod2
end;
seq = tmpseq(1:end);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -