基于大规模MIMO的MMSE-AMPT信号检测算法的误码率仿真

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

2.算法涉及理论知识概要

        MIMO(Multiple-Input Multiple-Output)技术,即多入多出技术,指在发射端和接收端分别使用多个发射天线和接收天线,使信号通过发射端与接收端的多个天线传送和接收,从而改善通信质量。它能充分利用空间资源,通过多个天线实现多发多收,在不增加频谱资源和天线发射功率的情况下,可以成倍的提高系统信道容量,显示出明显的优势、被视为下一代移动通信的核心技术。

 

       4G通信中,MIMO天线数量较少,多为4个或者8个,天线数量少就限制了4G网络的通信容量。5G4G研究的基础上,提出了大规模MIMOmassive MIMO)的概念,就是在基站端安装几百根天线(128根、256根或者更多),从而实现几百个天线同时发数据,而理论上的通信容量则是无限的。

 

       大规模MIMO技术指基站天线数目庞大,而用户终端采用单天线接收的通信方式,可作为目前移动通信系统的一种平滑的过渡方式,即不必大面积更新用户的终端设备,通过对基站的改造,提高系统的频谱利用率。

 

大规模MIMO的优点:

 

第一、大规模MIMO的空间分辨率与现有MIMO相比显著增强,能深度挖掘空间维度资源,使得网络中的多个用户可以在同一时频资源上利用大规模MIMO提供的空间自由度与基站同时进行通信,从而在不需要增加基站密度和带宽的条件下大幅度提高频谱效率。

 

第二、大规模MIMO可将波束集中在很窄的范围内,从而大幅度降低干扰。

 

第三、当天线数量足够大时,最简单的线性预编码和线性检测器趋于最优,并且噪声和不相关干扰都可忽略不计。

 

第四、可大幅降低发射功率,从而提高功率效率。

 

       随着移动数据业务量爆发式增加,传统的多输入多输出技术(multiple-input multiple-outputMIMO)因其仅能提供4×4或者8×8天线规模的系统而显得力不从心,大规模MIMO技術应运而生。大规模MIMO系统指在基站端配置多达几十甚至数百根天线阵列同时服务于多个单天线用户终端,大大提高了系统的频谱和能量效率。但是,随着天线数量的增加,大规模MIMO系统也面临一些问题,如何实现高效可靠的上行链路信号检测就是其中之一。

 

        随着基站端天线数量的大幅度增加,信道之间逐渐趋于正交,基于这个特性,线性检测算法如最小均方误差(minimum mean square errorMMSE)等在大规模MIMO系统中也具有很好的性能[6-7]。但是,这些线性检测算法涉及复杂的矩阵求逆运算从而导致复杂度过高[。为降低矩阵求逆带来的计算复杂度,采用Neumann级数展开算法用于信号检测,但当迭代次数大于2时,其计算复杂度又回到[Ok3],且当基站端天线和用户天线数量之比接近1时,会带来明显的BER性能损失[9]GAO X[10]提出了Richardson迭代算法,但在迭代参数计算量较大且迭代次数较低时算法性能很差。TANG C[11]DAI L提出了Gauss-Seidel算法和Newton算法,它更多地关注精度,所以计算复杂度也较大。

 

 

 

3.MATLAB核心程序

 

n=32;
m=64;
SNR_range=[0:2:20]; 
count=0;
 
for SNR=SNR_range
for monte=1:5000
    [SNR,monte]
    H=randn(m,n); %channel matrix
    A=7;% size of constellations
    u=1*randi([-A,A],n,1);% symbols in users 
    
    sigmas2=A*(A+1)/3;              % theoretical signal power;  
    sigma2=sigmas2/((10^(SNR/10))); % noise power
    y=H*u+sqrt(sigma2)*randn(m,1);  %the received signal
 
     for j=1:3
          switch j
             case 1 %  MMSE
            xhat=round(pinv([H;sigma2/sigmas2*eye(n)])*[y;zeros(n,1)]);
            x_mmse=xhat;
             case 2 % MMSE-AMPT
            yp=y-H*x_mmse; %yp is the difference vector
            xhat=x_mmse+AMPT(yp,H,.5,.5); % AMP with ternery priors
             case 3  % MMSE-AMPG
            yp=y-H*x_mmse;
            xhat=x_mmse+AMPG(yp,H,sigmas2/20,.5);% AMP with Gaussian priors;the signal power is unknown
          end   
        uhat=max(min(xhat,A*ones(n,1)),-A*ones(n,1));%estimated symbols
        ser(j,monte)=sum(u~=uhat)/n; % symbol error rate    
     end
end
    count=count+1;
    SER(:,count)=mean(ser,2);
end
 

 

  

 

posted @ 2023-05-13 23:11  我爱C编程  阅读(40)  评论(0编辑  收藏  举报