您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > m序列产生及自相关和互相关函数曲线
1、m序列产生及自相关和互相关函数曲线functionPN=makem(x)%m序列产生函数ss1=num2str(x);ss2=dec2bin(base2dec(ss1,8));%先把八进制转换为十进制,再把十进制转换为二进制G=2^(length(ss2)-1)-1;%最大周期sd=[];forj=1:(length(ss2)-2)sd=[sd0];endsd=[sd1];%寄存器初始状态000...01PN=[];forj=1:GPN=[PNsd(length(sd))];%m序列输出的第一位onenum=[];forjj=1:length(ss2)ifstr2num(ss2(jj))==1onenum=[onenumjj-1];%存储二进制反馈系数里面“1”的位置-1,即进行异或的位置endendtemp=sd(onenum(2));forjj=3:length(onenum)%根据“1”的位置进行异或运算temp=xor(temp,sd(onenum(jj)));endforjj=length(ss2)-1:-1:2%移位(序列后一位值等于前一位值)sd(jj)=sd(jj-1);endsd(1)=temp;%序列第一位等于反馈出来的值endfunctionmandzi(ss)%m序列曲线及自相关函数曲线绘图函数ss1=num2str(ss);ss2=dec2bin(base2dec(ss1,8));%转换为二进制G=2^(length(ss2)-1)-1;%最大周期PN=makem(ss);%调用函数计算m序列pp=(-2).*PN+1;%0→11→-1pp2=[];fortao=-(G-1):G-1pp1=circshift(pp,[0,tao]);pp2=[pp2sum(pp.*pp1)/G];%计算自相关函数endsubplot(2,1,1)stem(PN)gridon;title(['使用生成多项式(',num2str(ss),')8=(',ss2,')2产生的m序列'])subplot(2,1,2)tao=-(G-1):G-1;plot(tao,pp2)gridon;title('自相关函数曲线')functionhuxg(x,y)%m序列互相关绘图函数x1=num2str(x);x2=dec2bin(base2dec(x1,8));%转换为二进制G1=2^(length(x2)-1)-1;%最大周期y1=num2str(y);y2=dec2bin(base2dec(y1,8));%转换为二进制G2=2^(length(y2)-1)-1;%最大周期ifG1~=G2error('周期不同,无法计算')returnendpn1=makem(x);%分别调用函数计算出m序列pn2=makem(y);pp=[];fortao=-(G1-1):G1-1pn1tao=circshift(pn1,[0,tao]);%计算互相关函数%pp=[ppsum(pn2.*pn1tao)/G1];pp=[ppsum(pn2.*pn1tao)];endtao=-(G1-1):G1-1;plot(tao,pp)gridon;title(['反馈系数(',num2str(x),')8和(',num2str(y),')8的互相关函数曲线'])2、Rake接收机仿真clearall;clcNumusers=1;Nc=16;%扩频因子ISI_Length=1;%每径延时为ISI_Lengh/2EbN0db=[0:1:30];%信噪比,单位dBTlen=8000;%数据长度Bit_Error_Number1=0;%误比特率初始值Bit_Error_Number2=0;Bit_Error_Number3=0;power_unitary_factor1=sqrt(6/9);%每径功率因子power_unitary_factor2=sqrt(2/9);power_unitary_factor3=sqrt(1/9);s_initial=randsrc(1,Tlen);%数据源wal2=[11;1-1];%产生walsh矩阵wal4=[wal2wal2;wal2wal2*(-1)];wal8=[wal4wal4;wal4wal4*(-1)];wal16=[wal8wal8;wal8wal8*(-1)];s_spread=zeros(Numusers,Tlen*Nc);%扩频ray1=zeros(Numusers,2*Tlen*Nc);ray2=zeros(Numusers,2*Tlen*Nc);ray3=zeros(Numusers,2*Tlen*Nc);fori=1:Numusersx0=s_initial(i,:).'*wal16(8,:);x1=x0.';s_spread(i,:)=(x1(:)).';end%将每个扩频后的输出重复为两次,有利于下面的延迟(延迟半个码元)ray1(1:2:2*Tlen*Nc-1)=s_spread(1:Tlen*Nc);ray1(2:2:2*Tlen*Nc)=ray1(1:2:2*Tlen*Nc-1);%产生第二径和第三径信号ray2(ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-ISI_Length);ray2(2*ISI_Length+1:2*Tlen*Nc)=ray1(1:2*Tlen*Nc-2*ISI_Length);fornEN=1:length(EbN0db)en=10^(EbN0db(nEN)/10);%将Eb/N0的dB值转化为十进制数值sigma=sqrt(32/(2*en));%将收到的信号dempdemp=power_unitary_factor1*ray1+...power_unitary_factor2*ray2+...power_unitary_factor3*ray3+...(randn(1,2*Tlen*Nc)+randn(1,2*Tlen*Nc)*i)*sigma;dt=reshape(demp,32,Tlen)';wal16_d(1:2:31)=wal16(8,1:16);%将walsh码重复为两次wal16_d(2:2:32)=wal16(8,1:16);rdata1=dt*wal16_d(1,:).';%解扩后rdata1为第一径输出wal16_delay1(1,2:32)=wal16_d(1,1:31);%将walsh码延迟半个码元rdata2=dt*wal16_delay1(1,:).';%解扩后rdata2为第二径输出wal16_delay2(1,3:32)=wal16_d(1,1:30);%将walsh码延迟一个码元wal16_delay2(1,1:2)=wal16_d(1,31:32);rdata3=dt*wal16_delay2(1,:).';%解扩后rdata3为第三径输出p1=rdata1'*rdata1;p2=rdata2'*rdata2;p3=rdata3'*rdata3;p=p1+p2+p3;u1=p1/p;u2=p2/p;u3=p3/p;rd_m1=real(rdata1*u1+rdata2*u2+rdata3*u3);%最大比合并rd_m2=(real(rdata1+rdata2+rdata3))/3;%等增益合并u=[u1,u2,u3];%选择式合并maxu=max(u);if(maxu==u1)rd_m3=real(rdata1);elseif(maxu==u2)rd_m3=real(rdata2);elserd_m3=real(rdata3);endendr_Data1=sign(rd_m1)';%三种方法判决输出r_Data2=sign(rd_m2)';r_Data3=sign(rd_m3)';%计算误比特率Bit_Error_Number1=length(find(r_Data1(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rata1(nEN)=Bit_Error_Number1/Tlen;Bit_Error_Number2=length(find(r_Data2(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rata2(nEN)=Bit_Error_Number2/Tlen;Bit_Error_Number3=length(find(r_Data3(1:Tlen)~=s_initial(1:Tlen)));Bit_Error_Rata3(nEN)=Bit_Error_Number3/Tlen;endsemilogy(EbN0db,Bit_Error_Rata1,'r*-');holdon;semilogy(EbN0db,Bit_Error_Rata2,'bo-');holdon;semilogy(EbN0db,Bit_Error_Rata3,'g.-');legend('最大比合并','等增益合并','选择式合并');xlabel('信噪比');ylabel('误比特率');title('三种主要分集合并方式性能比较');
本文标题:m序列产生及自相关和互相关函数曲线
链接地址:https://www.777doc.com/doc-4639783 .html