m序列产生及自相关和互相关函数曲线

1、 m序列产生及自相关和互相关函数曲线
function PN=makem(x)        %m序列产生函数
ss1=num2str(x);
ss2=dec2bin(base2dec(ss1,8));    %先把八进制转换为十进制,再把十进制转换为二进制
G=2^(length(ss2)-1)-1;          %最大周期
sd=[];
for j=1:(length(ss2)-2)
    sd=[sd 0];
end
sd=[sd 1];                    %寄存器初始状态0 0 1
PN=[];
for j=1:G
PN=[PN sd(length(sd))];            兽药管理条例%m序列输出的第一位
    onenum=[];                     
    for jj=1:length(ss2)
        if str2num(ss2(jj))==1
            onenum=[onenum  jj-1];    %存储二进制反馈系数里面“1”的位置-1,即进行异或的位置
        end
    end
   
    temp=sd(onenum(2));
    for jj=3:length(onenum)              %根据“1”的位置进行异或运算
        temp=xor(temp,sd(onenum(jj)));
    end
    for jj=length(ss2)-1:-1:2              %移位(序列后一位值等于前一位值)
        sd(jj)=sd(jj-1);
    end
    sd(1)=temp;                        %序列第一位等于反馈出来的值
end
function mandzi(ss)                %m序列曲线及自相关函数曲线绘图函数
ss1=num2str(ss);
ss2=dec2bin(base2dec(ss1,8));        %转换为二进制
G=2^(length(ss2)-1)-1;              %最大周期
PN=makem(ss);                    %调用函数计算沈氏家族m序列
pp=(-2).*PN+1;                    %01 1-1
pp2=[];
for tao=-(G-1):G-1
pp1=circshift(pp,[0,tao]);           
pp2=[pp2 sum(pp.*pp1)/G];        %计算自相关函数
end
   
subplot(2,1,1)
stem(PN)
grid on;
title(['使用生成多项式(',num2str(ss),')8=(',ss2,')2产生的m序列'])
subplot(2,1,2)
tao=-(G-1):G-1;
plot(tao,pp2)
grid on;
title('自相关函数曲线')
function huxg(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;                  %最大周期
if G1~=G2
    error('周期不同,无法计算')
    return
end
pn1=makem(x);                        %分别调用函数计算出m序列
pn2=makem(y);
pp=[];
for tao=-(G1-1):G1-1
pn1tao=circshift(pn1,[0,tao]);                %计算互相关函数
%pp=[pp sum(pn2.*pn1tao)/G1];
pp=[pp sum(pn2.*pn1tao)];
end
tao=-(G1-1):G1-1;
plot(tao,pp)
grid on;
title(['反馈系数(',num2str(x),')8(',num2str(y),')8的互相关函数曲线'])
2Rake接收机仿真
中长波辐射器clear all;
clc
Numusers=1;
Nc=16;                                          %扩频因子
ISI_Length=1;                                  %每径延时为ISI_Lengh/2
丹江口水电站
EbN0db=[0:1:30];                                    %信噪比,单位dB
Tlen=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=[1 1;1 -1];                                    %产生walsh矩阵
wal4=[wal2 wal2;wal2 wal2*(-1)];
wal8=[wal4 wal4;wal4 wal4*(-1)];
wal16=[wal8 wal8;wal8 wal8*(-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);
for i=1:Numusers
    x0=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);
for nEN=1:length(EbN0db)
    en=10^(EbN0db(nEN)/10);                    %Eb/N0dB值转化为十进制数值
强壮功    sigma=sqrt(32/(2*en));                          %将收到的信号demp
    demp=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);
    else
        if(maxu==u2)
            rd_m3=real(rdata2);
        else rd_m3=real(rdata3);
        end
    end
   
    r_Data1=sign(rd_m1)';                          %三种方法判决输出

本文发布于:2024-09-21 20:54:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/297795.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   序列   相关   延迟
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议