重庆交通大学信息科学与工程学院综合性设计性实验报告专业:通信工程专业11级学号:姓名:实验所属课程:第三代移动通信及其演进技术实验室(中心):软件与通信实验中心指导教师:吴仕勋2014年3月教师评阅意见:签名:年月日实验成绩:一、题目第三代移动通信的信道化码和扰码产生二、仿真要求要求一:建立M文件分别产生m序列、gold序列及OVSF序列。要求二:要求仿真不同序列的自相关和互相关特性。三、仿真方案详细设计1、m序列m序列又叫做伪随机序列、伪噪声(PN)码或伪随机码。它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列,产生框图如下所示:2、Gold序列Gold序列是R.Gold于1967年提出来的,它由两个m序列按下述方法演变而来的:把2个码长相同的m序列移位并进行模2加,如果相加的两个m序列是一对优选对,则相加的结果为一个Gold序列。如下图所示:3、OVSF序列OCSF序列又叫正交可变扩频因子,系统根据扩频因子的大小给用户分配资源,数值越大,提供的带宽越小,OVSF码互相关为零,相互完全正交。4、自相关函数自相关函数(AutocorrelationFunction)在不同的领域,定义不完全等效。函数代码:function[out]=autocorr(indata)ln=length(indata);out=zeros(1,ln);forii=0:ln-1out(ii+1)=sum(indata.*shift(indata,ii))/ln;end5、互相关函数互相关函数是信号分析里的概念,表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度。四、仿真结果及结论050100150200250300-1-0.500.51偏移量m序列的自相关性050100150200250300-0.1-0.0500.050.1偏移量m序列的互相关性050100150200250300-1-0.500.51偏移量gold序列的自相关性050100150200250300-0.1-0.0500.050.1偏移量gold序列的互相关性00.511.522.5300.511.52偏移量OVSF序列的自相关性00.511.522.53-1-0.500.51偏移量OVSF序列的互相关性从实验结果图我们可以看出,M序列自相关函数近似于一条直线,它的互相关特性看起来没有什么规律;Gold序列的自相关特性与m序列相比,要差一点,但互相关特性要比m序列好一些;OVSF序列的自相关特性曲线为一条幅值为1的直线,互相关特性为一条幅值为0的直线。五、总结与体会通过这次实验,我知道了m序列、Gold序列、OVSF序列的产生方法,知道了如何去求它们的自相关特性和互相关特性;而且通过这次实验,我也认识到了自己在MATLAB编程这方面还比较薄弱,应该在以后的学习生活中,不断提高自己的编程能力。六、主要仿真代码mseq函数:function[mout]=mseq(stg,taps,inidata)mout=zeros(1,2^stg-1);fpos=zeros(stg,1);fpos(taps)=1;forii=1:2^stg-1mout(1,ii)=inidata(stg);num=mod(inidata*fpos,2);inidata(2:stg)=inidata(1:stg-1);inidata(1)=num;endgoldseq函数:function[gout]=goldseq(m1,m2,n)ifnargin<3n=1;endgout=zeros(n,length(m1));forii=1:ngout(ii,:)=xor(m1,m2);m2=shift(m2,1);endOVSF函数:functiony=OVSF(SF)y=zeros(SF,SF);ifSF==1y=1;elsey=[OVSF(SF/2)OVSF(SF/2);OVSF(SF/2)-OVSF(SF/2)];endshift函数:function[outregi]=shift(inregi,shiftr)[h,v]=size(inregi);outregi=inregi;shiftr=rem(shiftr,v);ifshiftr>0outregi(:,1:shiftr)=inregi(:,v-shiftr+1:v);outregi(:,1+shiftr:v)=inregi(:,1:v-shiftr);elseifshiftr<0outregi(:,1:v+shiftr)=inregi(:,1-shiftr:v);outregi(:,v+shiftr+1:v)=inregi(:,1:-shiftr);end自相关函数:function[out]=autocorr(indata)ln=length(indata);out=zeros(1,ln);forii=0:ln-1out(ii+1)=sum(indata.*shift(indata,ii))/ln;end互相关函数:function[out]=crosscorr(indata1,indata2)ln=length(indata1);out=zeros(1,ln);forii=0:ln-1out(ii+1)=sum(indata1.*shift(indata2,ii))/ln;end主函数:clearall;clcstage=3;ptap1=[13];ptap2=[23];regi1=[111];regi2=[111];m_code_1=mseq(stage,ptap1,regi1);m_code_2=mseq(stage,ptap2,regi2);m_code1=2*m_code_1-1;m_code2=2*m_code_2-1;rho1=autocorr(m_code1);R1=crosscorr(m_code1,m_code2);x1=0:length(rho1)-1;subplot(3,2,1);plot(x1,rho1);xlabel('偏移量');ylabel('m序列的自相关性');subplot(3,2,2);plot(x1,R1);xlabel('偏移量');ylabel('m序列的互相关性');gold_code_1=goldseq(m_code_1,m_code_2,2);gold_code=2*gold_code_1-1;rho2=autocorr(gold_code(1,:));R2=crosscorr(gold_code(1,:),gold_code(2,:));x2=0:length(rho2)-1;subplot(3,2,3);plot(x2,rho2);xlabel('偏移量');ylabel('gold序列的自相关性');subplot(3,2,4);plot(x2,R2);xlabel('偏移量');ylabel('gold序列的互相关性');ovsf=OVSF(4);rho3=autocorr(ovsf(1,:));R3=crosscorr(ovsf(1,:),ovsf(2,:));x3=0:length(rho3)-1;subplot(3,2,5);plot(x3,rho3);xlabel('偏移量');ylabel('OVSF序列的自相关性');subplot(3,2,6);plot(x3,R3);xlabel('偏移量');ylabel('OVSF序列的互相关性');