⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmse.m

📁 本代码包含M序列和GOLDEN序列的生成
💻 M
字号:
% adaptiveMMSE(LMS)多用户检测(非盲),同步信号
clc
clear
fbconnection=[0 1 0 0 1]; % fbconnection为m序列的一个本原多项式
mseq=m_sequence(fbconnection); % 产生m序列
fbconnection1=[0 0 1 0 1];
fbconnection2=[0 1 1 1 1]; % fbconnection1,fbconnenction2为m序列的一对优先对
goldseq=gold_seq(fbconnection1,fbconnection2); % 产生gold序列
N=2^length(fbconnection)-1; % N为gold序列长度,即为扩频倍数(扩频增益)
ind1=find(mseq==0);
mseq(ind1)=-1; % 极性变换
ind2=find(goldseq==0);
goldseq(ind2)=-1;% 极性变换
% goldseq=1/sqrt(31)*goldseq;

bit_number=2000; % bit_number为用户数据长度
K=6; % K为DS-CDMA信号中用户个数

ABer=zeros(1,13);
ReN=500;
figure
for rei=1:ReN;
    
    data=zeros(K,bit_number);
    for i=1:K
        data(i,:)=randsrc(1,bit_number);
    end % 产生K*bit_number的用户混合矩阵
    u=1*1e-1;
   
    
         SNR=-2:10;
         n1=length(SNR);
         Ber=zeros(1,length(SNR));
         j=1;
         a=SNR(1);
         b=SNR(n1);

         power1=0;% 假设第一个用户为期望用户,发射功率为0dB,其他用户为干扰用户,干扰功率为InterpowerdB,
         Interpower=[4 4 4 4 4];
        % Interpower=rand(1,K-1)*10;
        % Interpower=floor(Interpower)+1;
         Power=[power1,Interpower];
         A=zeros(1,K);
        for k=1:K
             A(k)=sqrt(10^(Power(k)/10));
        end
    
        s1=goldseq(1,:)';
         for snr=a:b
             r=zeros(N,bit_number);
            for k=1:K  
                 r1=zeros(N,bit_number);
r1=goldseq(k,:)'*data(k,:);
                 r1=awgn(r1,snr);
                r=r+A(k)*r1;
            end	
    
            e=zeros(1,bit_number);
            y1=zeros(1,bit_number);
            x=zeros(N,1);
            for i=1:100
                 y1(i)=sign(x'*r(:,i)); 
                 e(i)=data(1,i)-y1(i);;
                x=x+u*e(i)*r(:,i);
            end

            for i=101:bit_number
                y1(i)=sign(x'*r(:,i));
                e(i)=data(1,i)-y1(i);
            end
            [number,ber]=symerr(y1,data(1,:));
            Ber(j)=ber;
             j=j+1;
    
         end
         ABer=Ber+ABer;
   
        SNR=a:b;
        semilogy(SNR,Ber,':*');
        hold on;
        u=u*10;
    end
Ber=ABer/ReN;
semilogy(SNR,Ber,'r-^');
title('同步DS-CDMA信号的线性MMSE(LMS算法)多用户检测');
xlabel('SNR(dB)');
ylabel('BER');
grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -