使用MATLAB仿真GOLD序列与M序列
function c =gold()
n=7;
%m1 序列的多项式为(211)8=(010001001)2
a=[1 1 1 1 1 1 1 1];
co=[];
for v=1:2^n-1
co=[co,a(1)];
a(8)=mod(a(5)+a(1),2);
a(1)=a(2);
a(2)=a(3);
a(3)=a(4);
a(4)=a(5);
a(5)=a(6);
a(6)=a(7);
a(7)=a(8);
end
m1=co;
% m2的多项式为(217)8=(010001111)2
% 本原多项式为(211)8和(217)8的两个m序列为一个优选对,相加可构成一个GOLD序列
b=[1 0 1 0 0 0 0 1]; %m2各移位寄存器的初态值:b1至b8
co=[];
for v=1:2^n-1
co=[co,b(1)];
m=mod(b(5)+b(1),2);
p=mod(b(6)+m,2);
b(8)=mod(b(7)+p,2);
b(1)=b(2);
b(2)=b(3);
b(3)=b(4);
b(4)=b(5);
b(5)=b(6);
b(6)=b(7);
b(7)=b(8);
end
m2=co;
%两序列逐位模二加,生成GOLD序列
c = xor(m1,m2)
subplot(3,1,1)
stem(m1)
title('使用生成多项式(211)8=(010001001)2产生第一个m序列')
subplot(3,1,2)
stem(m2)
title('使用生成多项式(217)8=(010001111)2产生第一个m序列')
subplot(3,1,3)
stem(c)
title('级数为7,长度为127的平衡Gold序列,由m1序列和m2序列逐位模2加产生')