• 大小: 63KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-26
  • 语言: Matlab
  • 标签: matlab  RLS  LMS  

资源简介

分析并研究了DS-CDMA (直扩码分多址) 通信系统中的两种盲多用户检测算法,即最小均方(LMS) 算法和递推最小二乘(RL S)。仿真实验了在平稳信道下、同步DS-CDMA系统中接收机应用这两种盲多用户检测算法抑制多址干扰(MAI) 的能力,仿真实验与理论推导相吻合。实验与理论都表明,递推最小二乘(RLS)算法能快速收敛、信干比大更具有实用性。

资源截图

代码片段和文件信息

clc
clear all
N=31;%扩频增益%
step=2000;
K=10;
S1=[1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1];%a(n)=a(2)+a(-1)
S2=[1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1];%a(n)=a(3)+a(2)+a(1)+a(-1)
for i=1:N
    SS(i:)=(S1~=[S2(i:N)S2(1:i-1)]);
end
SS=SS*2-1;
S=SS(1:K:);
 
C(1:)=SS(1:);
C(2:N:)=rand(N-1N)*2-1;
for i=2:N
    rou=C(i:)*C(1:i-1:).‘./dot(C(1:i-1:)C(1:i-1:)2).‘;
    C(i:)=C(i:)-rou*C(1:i-1:);
end
for i=1:N
    C(i:)=C(i:)/sqrt(dot(C(i:)C(i:)));
end
C_null=C(2:N:);
SNR_db=[20303030303040404050];  %SNR (in dB)%
SNR=10.^(SNR_db./10);
A=sqrt(SNR./SNR(1));
%lms盲自适应多用户检测%
uplms=zeros(1step);
downlms=zeros(1step);
repeat_time=60; %实验重复次数%
for repeat=1:repeat_time
    repeat;
    b=zeros(Kstep);
    b=sign(rand(Kstep)-0.5);
    noise=randn(Nstep); 
    noise=sqrt(10./SNR(1))*noise;% Noise%
    for i=1:K
        Ab(i:)=A(i)*b(i:);
    end
    ystep=(Ab.‘*S).‘;
    ystep=ystep+noise;
    x=zeros(1N);
    mu=1e-6;
    for i=1:step
        Z=(S(1:)+x)*ystep(:i);
        ZMF=S(1:)*ystep(:i);
        x=x-mu*Z*(ystep(:i).‘-ZMF*S(1:));
        xx(i:)=x;
        c=S(1:)+x;
        up1(i)=(c*S(1:).‘)^2;
        down1(i)=( c*(ystep(:i)-b(1i)*S(1:).‘) )^2; %SINR(i)=up1/down1;
        y(i)=sign(c*ystep(:i));
    end
    uplms=uplms+up1;
    downlms=downlms+down1;
end
SINRlms=uplms./downlms;
SINR_dblms=10*log10(SINRlms);
plot(SINR_dblms‘r‘);
hold on
%rls盲自适应多用户检测%
clear
N=31;
step=2000;
K=10;
S1=[1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1];%a(n)=a(2)+a(-1)
S2=[1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1];%a(n)=a(3)+a(2)+a(1)+a(-1)
for i=1:N
    SS(i:)=(S1~=[S2(i:N)S2(1:i-1)]);
end
SS=SS*2-1;
S=SS(1:K:);
 
C(1:)=SS(1:);
C(2:N:)=rand(N-1N)*2-1;
for i=2:N
    rou=C(i:)*C(1:i-1:).‘./dot(C(1:i-1:)C(1:i-1:)2).‘;
    C(i:)=C(i:)-rou*C(1:i-1:);
end
for i=1:N
    C(i:)=C(i:)/sqrt(dot(C(i:)C(i:)));
end
C_null=C(2:N:);
SNR_db=[20303030303040404050];  %SNR (in dB)%
SNR=10.^(SNR_db./10);
A=sqrt(SNR./SNR(1));
uprls=zeros(1step);
downrls=zeros(1step);
repeat_time=60; 
for repeat=1:repeat_time
    repeat;
    b=zeros(Kstep);
    b=sign(rand(Kstep)-0.5);
    noise=randn(Nstep); 
    noise=sqrt(10./SNR(1))*noise;% Noise%
    for i=1:K
        Ab(i:)=A(i)*b(i:);
    end
    ystep=(Ab.‘*S).‘;
    ystep=ystep+noise;
    x=zeros(1N);
    sigma=1e-2;
    R1=1/sigma*eye(N);
    lamda=0.997;
    for i=1:step
        K1=R1*ystep(:i)/(lamda+ystep(:i)‘*R1*ystep(:i));
        h=R1*S(1:).‘;
        c=h/(S(1:)*h);
        R1=1/lamda*(R1-K1*ystep(:i)‘*R1);
        up2(i)=abs( (c.‘*S(1:).‘)^2 );
        down2(i)=abs( ( c.‘*(ystep(:i)-b(1i)*S(1:).‘) )^2 );
        %SINR(i)=up2/down2;
        y(i)=sign(real(c.‘*ystep(:i)));
    end
    uprls=uprls+up2;
    do

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    5541174  2018-12-05 09:52  RD_RLS_LMS\RD_RLS_LMS.bmp

     文件       3201  2018-12-05 09:51  RD_RLS_LMS\RD_RLS_LMS.m

     目录          0  2018-12-06 06:46  RD_RLS_LMS

----------- ---------  ---------- -----  ----

              5544375                    3


评论

共有 条评论