1.算法概述
多输入多输出(MIMO)天线技术的巨大潜力为新一代无线通信技术的研究提供了广阔的舞台。近年来,多用户的MIMO研究逐渐成为热点问题。针对多用户的MIMO,天线选择和用户选择特别值得研究,因为天线选择在获得多天线性能增益的同时又能降低系统的复杂度和成本,用户选择可以通过合理地选择部分最优的用户,有效地提高系统容量。就多用户MIMO系统中的天线选择技术和用户选择技术展开研究。具体讨论了MIMO系统天线的选择,多用户情况下MIMO系统的性能分析以及多用户和天线联合选择,并通过利用MATLAB对系统进行性能分析,通过研究得到,普通的MIMO系统,我们一般采用8*8的天线阵,作为收发天线。同时本文详细考虑了多用户情况下MIMO系统的天线选择。并对同时进行了单用户和多用户条件下系统的性能分析。
空时编码是MIMO技术中的基本问题。信息论的研究证明了MIMO系统具有巨大的理论信道容量。研究表明,只有使用空时编码方式对传输信号进行编码,然后通过多天线发送和接收,才一能有效提高系统的信道容量。目前最具代表性的空时编码有空时块码(STBC)、分层空时码LST)和空时格码(STTC)。
空时块码最先是又Alamouti引入的,采用了简单的两天线发分集编码方式。其实质上是将同一信息经过正交编码从两根天线上发射出去,两路信号因此具有正交性,在接收端就能够将两路独立的信号区别出来。这种STBC编码的最大的优势在于,采用简单的最大似然译码准则,可以获得完全的天线增益。Tarokh进一步将两天线TBC推广到多天线的形式,提出了通用的正交设计准则。这些STBC码可以获得完全的分集增益,并且只需要利用线性信号处理进行简单的最大似然译码。
·MIMO系统模型
假定一个点对点的MIMO系统有N根发射天线,M根接收天线,采用离散时间的复基带线性系统模型描述,其基本的系统框图如下所示:
MIMO系统的天线选择技术的准则包括两种:以最大化多天线提供的分集增益提高传输质量;以最大化多天线提供的容量来提高传输效率。一般而言,学者进行研究的时候都着眼于其中一个目标,也有的设计方案则对这两个目标进行折中。本文主要讨论以最大化多天线提供的容量提高传输效率的准则。不管是空间分集还是空间复用,一般来说,天线选择既可以在发送端进行,也可以在接收端进行,或者收发两端同时进行天线选择。根据其在发射端或接收端的位置不同,可分为发送天线选择,接收天线选择,发送/接收天线联合选择。并且采用不同的天线选择,对MIMO系统的性能影响也是不同的。
·接收天线选择
如图2所示,接收天线选择即从所有的接收天线中选出最合适的天线子集,也即最好的L个信噪比的天线,然后再对这些天线进行空时解码及信号处理,处理方式有最大合并比,等增益合并。
假定一个平坦衰落的信道模型,信道矩阵H的各系数独立同分布,服从均值为零,方差为1/2的复高斯随机变量。发射端采用等功率发射信号,接收端的盯链路不止一条,且噪声为加性高斯白噪声,接收天线选择的目标是通过一定的选择算法,尽量使信道容量的最大化。
发送天线选择的系统原理图,如3所示。
发送天线选择就是在发射端选出适当的发送天线子集,来使得对系统容量有最大的贡献。它需要一个来自接收端的反馈,以此作为发射天线选择的其中一个重要的依据圈,这是与接收天线选择的最大不同之处。
·发送/接收联合天线选择
发送/接收联合天线选择,就是在发送端和接收端同时进行天线选择,如图4所示,有两条反馈回路来保证反馈信息的及时获取。
2.仿真效果预览
2022a版本仿真结构如下:
3.MATLAB部分代码预览
nr_V = [1 2 4 8];
N0 = 1e-4;
B = 1;
Iteration = 1e4;
SNR_V_db = [-10:3:20];
SNR_V = 10.^(SNR_V_db/10);
color = ['b';'r';'g';'k'];
notation = ['-o';'->';'-*';'-^'];
for(k = 1 : 4)
nt = nt_V(k);
nr = nr_V(k);
for(i = 1 : length(SNR_V))
Pt = N0 * SNR_V(i);
for(j = 1 : Iteration)
H = random('rayleigh',1,nr,nt);
[S V D] = svd(H);
landas(:,j) = diag(V);
[Capacity(i,j) PowerAllo] = WaterFilling_alg(Pt,landas(:,j),B,N0);
end
end
f1 = figure(1);
hold on
plot(SNR_V_db,mean(Capacity'),notation(k,:),'color',color(k,:))
hold on
[y,x] = hist(reshape(landas,[1,min(nt,nr)*Iteration]),100);
plot(x,y/Iteration,'color',color(k,:));
clear landas
end
f1 = figure(1)
legend_str = [];
for( i = 1 : length(nt_V))
legend_str =[ legend_str ;...
{['nt = ',num2str(nt_V(i)),' , nr = ',num2str(nr_V(i))]}];
end
01-20m