gold序列的生成与相关特性仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Gold序列生成与相关性仿真
1.1 references
[1] 基于Matlab的Gold码序列的仿真与实现.
[2] Code Selection for CDMA Systems.
1.2 m序列的生成原理
1.2.1生成本原多项式
利用Matlab编程环境求解本原多项式,其运行结果如表1所示.选择n=7,采用7级移位寄存器,产生的序列周期是127,其程序如下所示.
N=7; %以7级寄存器为例,并组其中的一组优选对:211,,217
connections=gfprimfd(N,'all');
表(1)n=7 本原多项式
上面的多项式中,仅有9个是独立的.因为第一行和第十行,第二行和四行,第三行和第十六行,第五行和第八行,第六行和第十四行,第七行和第十三行,第九行和第十八行,第十一行和第十二行,第十五行和第十七行是两两对称的.用八进制数表示时,所选择的本原多项式为211、217、235、367、277、325、203、313和345共9条.在这9条本原多项式中,选择一个基准本原多项式,再按要求选择另一本原多项式与之配对,构成m序列优选对,对7级m序列优选对如下表:
表(2)n=7 m序列所以优选对
1.2.2构成移位寄存器
根据产生Gold码序列的方法,从上述本原多项式中选择一对m序列优选对,以211作为基准本原多项式,217作为配对本原多项式,通过并联结构形式来产生Gold序列,生成gold 序列的结构如图(6)所示:
图(6)Gold序列生成结构
1.3 自相关函数
仿真参数及初始值设定如下:
N=7; %以7级寄存器为例,并组其中的一组优选对:211,,217
connections=gfprimfd(N,'all');
f1=connections(4,:); %取一组本原多项式序列,211
f2=connections(16,:); %取另一组本原多项式序列,217
registers1=[1 0 0 0 0 0 0];%给定寄存器的初始状态
registers2=[1 0 0 0 0 0 0];%取相同的初始状态
生成的gold 序列自相关函数如图(7)、(8)所示
图(7) Gold 序列周期自相关函数
结论:自相关函数取值集合{127,15,-1,-17}
图(8)Gold 序列非周期自相关函数
020406080100120140
gold 序列周期自相关函数
020406080100120140
-40
-20
20
40
60
80
100
120
140
gold 序列非周期自相关函数
1.4 互相关函数
仿真时改变m序列寄存器初始状态,从而生成两个gold序列,求得互相关函数如图(9)(10)所示。
N=7; %以7级寄存器为例,并组其中的一组优选对:211,,217
connections=gfprimfd(N,'all');
f1=connections(4,:); %取一组本原多项式序列,211
f2=connections(16,:); %取另一组本原多项式序列,217
registers1=[1 0 0 0 0 0 0];%给定寄存器的初始状态
registers2=[1 0 0 0 0 0 0];%取相同的初始状态
registers3=[0 0 0 0 0 1 0];%给定寄存器的初始状态
registers4=[0 1 0 0 0 0 0];%取不相同的初始状态
gold序列周期互相关函数
图(9)gold序列周期互相关函数
gold序列非周期互相关函数
图(10)gold序列非周期互相关函数
结论:仿真得到gold序列具有三值互相关函数{-1,-17, 15},从而验证了上述定理。
遍历第2个寄存器,得到127个gold序列,和第一个做互相关,记录最大值。
for m=1:L
registers4=dec2bin(m,7);%遍历第2个寄存器,得到127个gold序列,和第一个做互相关,记录最大值。
…
maxR=max(R);
minR=min(R);%记录最大最小值
end
仿真结果:对于每个循环,第二个寄存器初始值不同,求得自相关函数最值:
maxR=15
minR=-17
1.5 matlab仿真代码
clear all;
clc;
N=7; %以7级寄存器为例,并组其中的一组优选对:211,,217
connections=gfprimfd(N,'all');
f1=connections(4,:); %取一组本原多项式序列,211
f2=connections(16,:); %取另一组本原多项式序列,217
registers1=[1 0 0 0 0 0 0];%给定寄存器的初始状态
registers2=[1 0 0 0 0 0 0];%取相同的初始状态
L=2^N-1; %周期长度
sum2=0;
sum1=0;
for k=1:L
seq1(k)=registers1(N); %第一组m序列
seq2(k)=registers2(N); %第二组m序列
for j=1:N %进行模2加
sum1=sum1+f1(j+1)*registers1(j); %各级寄存器送参与模2加的值sum1=mod(sum1,2);
sum2=sum2+f2(j+1)*registers2(j); %各级寄存器送参与模2加的值sum2=mod(sum2,2);
end
for t=N:-1:2 %寄存器移位
registers1(t)=registers1(t-1);
registers2(t)=registers2(t-1);
end
registers1(1)=sum1;
registers2(1)=sum2;
sum2=0;
sum1=0;
end
z=seq1+seq2; %m序列的相加
gold=mod(z,2); %模2运算
%-------周期自相关函数------%%
a=1-2*gold;
b=a;
for i=1:L
R(i)=sum(a.*b)
b=[b(127) b(1:126)]
end
plot(R);
title('gold序列周期自相关函数');
% % %-------非周期自相关函数--------%%
% a=1-2*gold;
% b=a;
% for i=1:L
% R(i)=sum(a.*b)
% b=[0 b(1:126)]
% end
% plot(R)
% title('gold序列非周期自相关函数');