基于matlab的gold码的生成及相关性分析
- 格式:doc
- 大小:80.50 KB
- 文档页数:2
湖南科技大学移动通信实验报告姓名:吴文建学号:1208030104专业班级:应用电子技术教育一班实验名称:GOLD序列产生及其特性实验实验目的:1)掌握Gold序列的特性、产生方法及应用。
2) 掌握Gold序列与m序列的区别。
实验仪器:1、pc机一台2、实验原理:m序列虽然性能优良,但同样长度的m序列个数不多,且m序列之间的互相关函数并不理想(为多值函数)。
1.m序列优选对m序列优选对是指在m序列集中,其互相关函数最大值的绝对值满足下式的两条n介m序列:2.Gold序列的产生方法Gold序列是m序列的组合序列,由同步时钟控制的两个码元不同的m序列优选对逐位模2加得到。
这两个序列发生器的周期相同,速率相同,因而两者保持一定的相位关系,这样产生的组合序列与这两个自序列的周期也相同。
当改变两个序列的相对位移,会得到一个新的Gold序列。
Gold序列具有以下性质:(1)两个m序列优选对经不同移位相加产生的新序列都是Gold序列,两个n级移位寄存器可以产生2n+1个Gold序列,周期均为2n−1。
(2)Gold序列的周期性自相关函数是一个三值函数,与m序列相比,具有良好的互相关特性。
Gold序列的产生有两种形式:并联形式和串联形式实验步骤:1.预习Gold序列的产生原理及性质及独立设计Glod序列产生方法。
2.画出Gold序列仿真流程图。
3.编写MATLAB程序并上机调试。
4.比较m序列与Glod序列的异同。
5.撰写实验报告。
实验数据、结果表达及误差分析:实验仿真图形如图所示实验编写程序(此程序在实验五编写程序之上方可运行):function c=gold()n=7;a=[1 1 1 1 1 1 1 1];co=[];for v=1:2^n-1co=[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);endm1=co;如有侵权请联系告知删除,感谢你们的配合!如有侵权请联系告知删除,感谢你们的配合!。
实验八GOLD码特性实验一、实验目的1、掌握GOLD码的编解码原理。
2、掌握GOLD码的软件仿真方法。
3、掌握GOLD码的硬件仿真方法。
4、掌握GOLD码的硬件设计方法。
二、预习要求1、掌握GOLD码的编解码原理和方法。
2、熟悉matlab的应用和仿真方法。
3、熟悉Quatus的应用和FPGA的开发方法。
三、实验原理1、GOLD序列简介GOLD序列是由m序列的“优选对”构成的。
所谓优选对是指m序列中互相关值为[-1,-t(n),t(n)-2]的一对序列。
其中下表为部分m序列的部分优选对表1 部分m序列的部分优选对n基序序列配对序列3131554575,67,766103147,1337211217,235,277,203,301910211131,1461,1423,1167,1333,1365,1533 1020112415,2157,3515,34711140054445,4215,6015,4143,4053,7335,5747,5575,4161上表中的m序列采用8进制(可参见PN码实验)。
2、GOLD序列由m序列中的优选对{xi}和{yi}本身加上它们的相对移位模二相加构成的2n-1个序列组成,序列总数为2n+1。
任一队序列之间的互相关函数都是三值的,即即,GOLD序列的最大互相关值为下表为GOLD序列的t(n)值及其与自相关峰值Rs(0)的比值,同时给出GOLD序列族中的序列数。
表为部分GOLD序列的t(n)值、Rs(0)、序列数表级数n356791011序列长7316312751110232047序列数9336512951310252049t(n)591717336565t(n)/Rs(0)0.710.290.270.130.060.060.03四、GOLD的产生及特性分析1、建立GOLD的仿真文件(GOLD.MDL)GOLD1…GOLD7的Sample Time均设置为SampleTime;Preferred polynomial(1)设置为[1 0 1 1];Initial states(1)设置为[0 0 1]; Preferred polynomial(2)设置为[1 1 0 1];Initial states(2)设置为[0 01]。
gold序列的⽣成与相关特性仿真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,,217connections=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,,217connections=gfprimfd(N,'all');f1=connections(4,:); %取⼀组本原多项式序列,211f2=connections(16,:); %取另⼀组本原多项式序列,217registers1=[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 序列⾮周期⾃相关函数020406080100120140gold 序列周期⾃相关函数020406080100120140-40-2020406080100120140gold 序列⾮周期⾃相关函数1.4 互相关函数仿真时改变m序列寄存器初始状态,从⽽⽣成两个gold序列,求得互相关函数如图(9)(10)所⽰。
通信08-1 艾盼盼0850283101设计Gold序列发生器姓名:艾盼盼学号:0850283101 班级:通信08-1摘要:m序列,尤其是m序列优选对,是特性很好的伪随机序列。
但是,它们能彼此构成优选对的数目很少,不便于在码分多址系统中应用。
R.Gold于1967年提出了一种基于m 序列优选对的码序列,称为Gold序列。
它是m序列的组合码,由优选对的两个m序列逐位模2加得到,当改变其中一个m序列的相位(向后移位)时,可得到一新的Gold序列。
Gold 序列虽然是由m序列模2加得到的,但它已不是m序列,不过它具有与m序列优选对类似的自相关和互相关特性,而且构造简单,产生的序列数多,因而获得广泛的应用。
【关键词】:m序列优选对,Gold序列,模2加,自相关1. Gold码的概述1.1 gold码定义R.Gold于1967年提出了一种基于m序列优选对的码序列,称为Gold序列。
它是m序列的组合码,由优选对的两个m序列逐位模2加得到,当改变其中一个m序列的相位(向后移位)时,可得到一新的Gold序列。
Gold序列虽然是由m序列模2加得到的,但它已不是m 序列,不过它具有与m序列优选对类似的自相关和互相关特性,而且构造简单,产生的序列数多,因而获得广泛的应用。
1.2 gold码基本功能单元Gold码发生器的基本功能单元为线性反馈移位寄存器LFSR(Linear Fdddback Bhift Register)。
2.Gold序列的设计2.1 m序列优选对寻找方法产生gold序列的必要条件是m序列优选对,设A是对应于n级本原多项式f(x)所产生的m序列,B是对应于n级本原多项式g(x)所产生的m序列,当它们的互相关函数|Ra.b(k)|满足:则f(x)和g(x)所产生的m序列A和B构成一对优选对。
寻找m序列优选对的方法还有硬件计算法,分圆陪集法,逐步移位模2加法,三值判别法。
2.2gold序列设计的理论证明证明,若F1(x),F2(x)为两个不同的本原多项式,令F1(x)产生的序列为G(F1),F2(x)产生的序列为G(F2),F1(x). F2(x)所产生的序列为G(F1,F2),则有上式表明两本原多项式乘积所产生的序列等于两个本原多项式分别产生的模2和序列。
用MATLAB进行Gold序列的产生Gold序列因为其良好的伪噪声特性,经常作为CDMA扩频系统仿真中的用户扩频序列,用MATLAB可以产生各种长度的Gold序列优选对,用MATLAB进行Gold序列的产生Gold序列因为其良好的伪噪声特性,经常作为CDMA扩频系统仿真中的用户扩频序列,用MATLAB可以产生各种长度的Gold序列优选对,在此基础上,产生混沌序列等其他性质的扩频序列也很容易。
下面给出完整的源程序% MATLAB script for Illustrative Gold sequence generation. echo on % first determine the maximal length shift register sequences %We'll take the initial shift register content as "00001".connections1=[1 0 1 0 0];connections2=[1 1 1 0 1];sequence1=ss_mlsrs(connections1);sequence2=ss_mlsrs(connections2);% cyclically shift the second sequence and add it to the first one L=2^length(connections1)-1;;for shift_amount=0:L-1,temp=[sequence2(shift_amount+1:L) sequence2(1:shift_amount)];gold_seq(shift_amount+1,:)=(sequence1+temp) -floor((sequence1+temp)./2).*2;end;% find the max value of the cross correlation for these sequences max_cross_corr=0;for i=1:L-1,for j=i+1:L,% equivalent sequencesc1=2*gold_seq(i,:)-1;c2=2*gold_seq(j,:)-1;for m=0:L-1,shifted_c2=[c2(m+1:L) c2(1:m)];corr=abs(sum(c1.*shifted_c2));if (corr>max_cross_corr),max_cross_corr=corr;end;end;end;end;% note that max_cross_corr turns out to be 9 in this example...调用的子函数ss_mlsrs.mfunction [seq]=ss_mlsrs(connections);% [seq]=ss_mlsrs(connections)% SS_MLSRS generates the maximal length shift register sequence when the% shift register connections are given as input to the function. A "zero" % means not connected, whereas a "one" represents a connection. m=length(connections);L=2^m-1; % length of the shift register sequence requestedregisters=[zeros(1,m-1) 1]; % initial register contentsseq(1)=registers(m); % first element of the sequence for i=2:L, new_reg_cont(1)=connections(1)*seq(i-1);for j=2:m,new_reg_cont(j)=registers(j-1)+connections(j)*seq(i-1);end;registers=new_reg_cont; % current register contentsseq(i)=registers(m); % the next element of the sequence end;。
武夷学院实验报告课程名称:_扩频通信技术及应用_ 项目名称:基于matlab的伪随机序列生成及相关函数仿真实验姓名:翁开传__专业:__通信工程___ 班级:__2__学号:_40__同组成员_无___1注:1、实验预习部分包括实验环境准备和实验所需知识点准备。
2、若是单人单组实验,同组成员填无。
2注:实验过程记录要包含实验目的、实验原理、实验步骤,页码不够可自行添加。
2)函数auto_corr()计算二进制序列seq的自相关函数,并画出函数曲线。
在函数内调用了生成m序列的函数ms_generator(*)生成的m序列seq,然后在计算。
function seq=ms_generator(registers,connections)registers=[0 0 0 0 1];connections=[1 0 0 1 0 1];n=length(connections);L=2^(n-1)-1;seq(1)=registers(n-1);for i=2:Lsum=0;for m=1:(n-1)sum=mod(sum+registers(m)*connections(m+1),2);endfor k=(n-1):-1:2registers(k)=registers(k-1);endregisters(1)=sum;seq(i)=registers(n-1);endfunction auto_correlation=auto_corr(seq)registers=[1 0 0 0 0 ];%设置初始状态connections=[1 0 1 0 0 1];%设置反馈逻辑seq=ms_generator(registers,connections);seq=-1*(seq*2-1);%负逻辑映射len=length(seq);temp=[seq seq];for i=0:len-1auto_correlation(i+1)=seq*(temp(i+1: i+len))';endauto_correlationplot(0:len-1,auto_correlation);运行的结果如下3)函数cross_corr()计算二进制序列seq1和seq2的互相关函数并画出曲线。
MATLAB仿真m序列和Gold序列自相关与互相关MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
本章正是运用MATLAB来仿真m序列和Gold序列的相关特性,以及OCDMA 系统的误码率同用户数N的关系曲线。
su1 仿真过程在理论分析的基础上,下面使用附录上两段程序,通过MATLAB仿真得出m序列和Gold序列的自己相关性。
这段m序列产生程序采用了8个移位寄存器,将最后两个移位寄存器的值进行异或处理反馈给第一个移位寄存器,然后向前移位,输出最后一个移位寄存器的值,Gold序列的产生只是将两个m序列中的一个进行延时移位,再进行异或,产生的主要原理和m序列并无较大差异。
在这两段程序个前半部分m序列和Gold序列生成的基础上,只要将y1=xcorr(x1)改为y1=xcorr(x1,x2)即可求出它们的互相关仿真。
2 仿真结果在系统中采用上述序列仿真得到自相关和互相关特性曲线如图1 , 2及图3 所示。
图1 m 序列的自相关曲线图4-2 m 序列与Gold序列的自相关曲线图4-3 m 序列与Gold 序列的互相关曲线附录程序1X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101), Yi为移位寄存器各级输出m=120; %置M序列总长度for i=1:m %1#Y8=X8; Y7=X7; Y6=X6; Y5=X5; Y4=X4; Y3=X3; Y2=X2; Y1=X1;X8=Y7; X7=Y6; X6=Y5; X5=Y4; X4=Y3; X3=Y2; X2=Y1;X1=xor(Y7,Y8); %异或运算if Y8==0U(i)=-1;elseU(i)=Y8;endendM=U%绘图i1=it=1:1:i1;x1=[(2*M)-1]’;%将运行结果m序列M从单极性序列变为双极性序列y1=xcorr(x1);%求自相关性t=1:1:i1;plot(t,y1(1:i1));axis([1,120,-12,288])%绘出信号的相关图gridxlabel('t')ylabel('相关性')title('移位寄存器产生的M序列的相关性')程序2function c=gold()n=7;a=[1 1 1 1 1 1 1 1];co=[];for v=1:2^n-1co=[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);endm1=co;b=[1 0 1 0 0 0 0 1];co=[];for v=1:2^n-1co=[co,b(1)];m=mod(b(5)+b(1),2);p=mod(b(6)+m,2);b(8)=mod(b(5)+b(1),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);endm2=co;c=xor(m1,m2);x2=[(2*c)-1]’;%将运行结果Gold序列c从单极性序列变为双极性序列y1=xcorr(x2);%求自相关性t=1:1:120;plot(t,y1(1:120));axis([1,120,-12,288])%绘出信号的相关图gridxlabel('t')ylabel('相关性')title('移位寄存器产生的Gold序列的相关性')。