MIMO系统检测算法仿真
MIMO系统检测算法仿真
姓名: 学号:
目录
1
摘 要 ------------------------ 错误!未定义书签。 一、MIMO系统简介 ---------------------------------- 1 二、MIMO系统容量分析 ------------------------------ 2 三、MIMO多用户系统检测技术 ------------------------- 5
3.1多用户检测技术原理 ------------------------ 5 3.2 V-BLAST的迫零检测 ------------------------ 6 3.3 ZF-SIC算法 ------------------------------- 6 3.4 MMSE算法 --------------------------------- 7 3.5 MMSE-SIC算法 ----------------------------- 8 3.6 最大似然(ML)检测算法 --------------------- 8 四、仿真结果 --------------------------------------- 9 五、分析与总结 ------------------------------------ 11 六、参考文献 -------------------------------------- 12 七、附录 ------------------------------------------ 13
2
1
一、MIMO系统简介
多输入多输出(MIIMO,Multiple-Input Multiple-Output)技术最早由Marconi于1908年提出的,是利用多天线来抵御信道衰落。可以简单定义为:在一个任意的无线系统中,链路的发端和收端都使用多天线,也包括单入多出系统和多入单出系统。MIMO的核心思想是:将发送端的信号分开而将接收端天线的信号合并,使每个MIMO用户的传输质量——比特误码率(BER)或数据速率得到改进,提高网络服务质量。MIMO技术可以把多径效应作为有利因素来加以利用,在不增加带宽的情况下成倍地提高通信系统的容量和频谱利用率。在理想情况下,MIMO系统的信道容量随发送天线个数和接收天线个数的最小值线性增加,从而提供目前其他技术无法达到的容量潜力。多天线发送和接收技术是空间分集与时间分集技术的结合,有很好的抗干扰能力,如果能进一步将多天线发送和接收技术与信道编码技术结合,就可以更大程度地提高系统性能。
MIMO技术领域另一个研究热点就是空时编码。常见的空时码有分层空时码、空时网格码、空时分组码。空时码的主要思想是利用空间和时间上的编码实现一定的空间分集和时间分集,从而降低信道误码率。MIMO无线通信技术采用空时处理技术进行信号处理,在多径环境下,无线MIMO系统可以极大地提高频谱利用率,增加系统的数据传输速率。
MIMO技术利用多个天线实现多发多收,充分开发空间资源,可以
1
成倍地提高信道容量,同时也可以提高信道的可靠性,降低误码率。多用户检测技术与MIMO结合可以进一步提高传输效率。但是在MIMO系统多用户检测的研究上,尽管全空间最大似然(ML)检测能获取最优的检测性能,但由于其算法复杂度太高,一直无法实际应用,于是研究复杂度较低,性能接近ML的多用户检测算法具有重要意义,MMSE算法,ZF算法,以及对两者进行改进的MMSE-SIC算法和ZF-SIC算法。
二、MIMO系统容量分析
假定一个点对点MIMO系统有Mr个发射天线、MR个接收天线。集中于用离散时间描述的复基带线性系统模型,系统框图如图2-1所示。用Mr×1列矩阵s表示每个符号周期内的发射信号,其中第i个元素si表示第i根天线发射的信号。
图2-1 MIMO系统框图
对于高斯信道,按照信息论可知,发射信号的最佳分布也应该是
2
高斯分布的。
因此,s的元素是零均值独立同分布的高斯变量。发射信号的协方差矩阵为:
RssE{SSH}
(2-1)
E{•}代表均值;S表示矩阵的复共扼转置矩阵。不管发射天线
数是多少,总的发射功率限制为P。如果信道在发射端未知,则假定从各个天线发射的信号都有相等的功率P/MT。这样,发射信号的协方差矩阵为:
RssPIMrMT
(2-2)
由于发射信号的带宽足够窄,因此可以认为它的频率响应是平坦的。换句话说,假定信道是无记忆的。
用MRMT的复矩阵H描述信道。hji表示矩阵H的第ji个元素,代表从第i根发射天线到第j根接收天线之间的信道衰落系数。为了规范,假定MR根接收天线中每一根天线的接收功率都等于总的发射功率。这种假定,实际上忽略了信号传播过程中的信号衰减和放大,包括阴影、天线增益。于是得到了具有确定参数的信道矩阵H中的各元素的规范限定,如下式所示:
hi1Mr2jiMT,j1,2,...,MR
(2-3)
3
当信道矩阵元素为随机变量时,规范就是对上述表达式取期望值。
假定己知接收端信道矩阵,但发射端不确定,那么可以通过向接收端发射训练序列来估计信道矩阵,然后再通过可靠的反馈信道将估计的信道状态信息(CSI)发送到发射端。用MR1的列矩阵描述接收端的噪声,表示为n。它的元素是统计独立的复零均值高斯变量,它具有独立且方差相等的实部与虚部。接收噪声的协方差矩阵为:
RnnE{nnH}
(2-4)
如果n的元素之间没有相关性,则接收噪声的协方差矩
RnnN0IMR
(2-5)
MR 个接收分支中每一个都有相同的噪声功率N0。
接收端基于最大似然准则,在MR根天线上进行联合操作。用
MR1的列矩阵描述接收信号,表示为r,其中每个复元素代表一根接
收天线。Pr表示每根接收天线输出端的平均功率。则每根接收天线处的平均信噪比(SNR)定义为:
PrN0
(2-6)
前面己假定每根天线的总接收功率都等于总发射功率,这样,SNR就等于总的发射功率和每根接收天线的噪声功率的比值,而且它独立
4
于MT,写为:
PN0
(2-7)
使用线性模型,可将接收矢量表示为rHsn接收信号的协方差矩阵定义为E{rrH},利用式(2-5)可以得出
RrrHRssHH
(2-8)
而总接收信号功率可表示为tr(Rss)。
三、MIMO多用户系统检测技术
3.1多用户检测技术原理
传统的接收机进行的都是单一用户的检测,它的缺点是在对一个用户解调时没有利用已知的其它用户的信息,而是将多址干扰当作高斯白噪声处理,按照经典的直接扩频理论对每个用户信号分别进行扩频码匹配处理,因此抗MAI干扰能力较差,大大降低了系统容量。
MUD技术是在传统的检测技术基础上,充分利用造成干扰的所有用户的信息,对单个用户进行检测,从而解决抗干扰问题和抗远近效应的问题,降低了系统对功率控制精度的要求,因而能够更加有效地利用上行链路的频谱资源,从而显著提高系统的容量。
MUD的主要思想是:把同时占用某个信道的所有用户或某些用户的信号当作有用信号而不是当作干扰信号处理,利用多个用户的码
5
元、时间、信号幅度以及相位等信息联合检测单个用户的信号,即综合利用各种信息及信号处理手段,对接收信号进行处理,从而达到对多个用户信号的最佳联合检测。
图3-1多用户检测算法分类
3.2 V-BLAST的迫零检测
迫零检测器是一种线性检测器,它的作用是通过是通过线性滤波将数据流分隔开来,再对其进行独立译码。我们假定信道矩阵是可逆的,则发送信号向量的估计为:
x(HHH)-1HxHx
(3-1)
其中H表示矩阵H的伪逆。
在迫零ZF检测器中,每个数据流的分集增益为nRnT1。因此,迫零检测器是次优的。迫零检测是V-BLAST系统最早提出的经典检测算法。迫零算法的目的是找到迫零向量以消除各数据层之间的干扰。
3.3 ZF-SIC算法
串行干扰抵消算法(SIC)的思想是采用过逐步检测相消法来实现
6
子流的区分和检测,考虑MIMO系统的信号检测模型
xh1s1h2s2...hnsnn,之前所讲的ZF和MMSE算法是将s各分量的
估计值都得到后再作判决,而SIC算法是每得到一个分量就作判决得到si(即根据某种准则找出星座点集合中的一点与之对应),然后得到一个新的接收信号x'xhisi,这时x'中就消除了si的干扰,重复上述步骤得到s所有分量的估计即可。然而如果某个分量估计出错,则会大大影响剩余分量估计的准确度,即差错传播问题。引入排序机制的OSIC算法就在一定程度上削弱了这个影响。
HZF的协方差矩阵CZF2(HHH)12WZFWZF,其中wihj0,ij,1,ijwi(i1,2,...,nr)作为行向量组成一个矩阵WZF,这说明s各分量估计值
的方差正比于WZF相应行向量的范数Wi,显然应该先选择方差小的
wk个分量进行估计,分量进行估计,即最先选择s的第k1arg1minkn1r1s(1)s,得skwkx,而后对该结果进行判决得到sk。记x(1)x,H(1)H,
111经过第一次判决后,接收信号矢量更新为x(2)x(1)hksk,去掉H的第
11k1列hk得到H(2),去掉s中已判决出的分量sk得到
11(2)(2),选择WZF的第s(2)=(s1,...,sk11,sk11,...snr)T,计算新的检测子WZFk2argminwk2行与x(2)作内积然后判决即可得到s(2)中的第k2个分量
1k2nr的估计结果。重复上述步骤直到得到s所有分量的估计结果。
3.4 MMSE算法
MMSE算法在一定程度上改善了迫零算法的性能,它是用一个新
的矩阵HMMSE来代替迫零算法中的H。利用一下原则得到加权矩阵
7
2HMMSEargmin(E{HMMSErs})
HMMSE其中E表示期望值。算法步骤如下: 1) 先根据上述原则得到并计算加权矩阵HMMSE21H(HHI)H,其
H中:2为噪声方差;为发送信号功率。如果每根发射天线信号能量进行归一化,则在公式中的可以省略,此时1。 2) 将加权矩阵左乘接收信号,式子变为HMMSErHMMSEHsHMMSEn。 3) 直接利用公式sQ(HMMSEr)进行量化,从而对信号进行译码。
3.5 MMSE-SIC算法
1) 首先进行初始化G1HMMSE;
(Gi)j; 2) 选取信噪比最大的信号k1argminj3) 第i次迭代Wk(Gi)ki取第ki行;
i4) 计算判决变量skWkri;
ii5) 进行硬判决skWkri;
ii6) 抵消这个信号对下面要进行判决的影响ri1risk(H)k;
ii7) 计算Gi1Hk;
i(Gi1)j; 8) 再次选取信噪比最大的信号ki1argminj9) ii1。
3.6 最大似然(ML)检测算法
最大似然检测是MIMO检测中的最优检测方式,能获得最高的分集增益,检测出的信号是星座图上最接近发射点的信号。对于MIMO
8
来说,对第k个子载波上的信号检测表示如下:
dk(n)MLargmindk(n)(S)Nzk(n)Hk(n)dk(n) (3-2)
2式中,Hk(n)为MIMO信道估计所估计出的信道频率响应矩阵,S为BPSK调制中所有发出符号的星座集合,在进行了信道估计后,产生一个对角矩阵,因此,对各个子载波上的数据dk(n)进行ML检测时,可以分离开来进行,这时,多载波下的检测就相当于单个载波下的检测。
四、仿真结果
100BPSK调制的2x2型MIMO检测算法仿真图ZFZF-SICMMSEMMSE-SICML 10-110-2误比特率10-310-410-510 0-6510EbN0(dB)152025
图 4-1
9
100不同收发天线数MIMO检测算法仿真图 2x2型4x4型8x8型10-1误比特率10-210-310 0-4510EbN0(dB)152025
图4-2
100不同收发天线数MIMO检测算法仿真图2x2型 2x4型4x2型10-110-2误比特率10-310-410 0-5510EbN0(dB)152025
图4-3
10
五、分析与总结
由仿真结果可知,在采用相同的调制方式和相同的信噪比时,非线性检测的ML算法的误比特率远小于其他算法。线性检测算法中MMSE算法要优于ZF算法,这是因为MMSE算法在处理消除符号间干扰的时候考虑了噪声的影响,从而使得噪声和同频信号相互干扰造成的错误最小。ZF算法因为要根除同频信号的相互干扰而忽略了噪声的影响,因此,检测效果差些。
在线性检测ZF和MMSE中,当采用了顺序干扰消除,一次一个地将干扰从接收信号中除去时,性能得到了较好的提升,从图4-1中可以看出,ZF-SIC算法性能和MMSE算法性能差不多,但ZF-SIC算法和MMSE-SIC算法性能仍不及ML算法的性能。
图4-2和图4-3是研究在ZL算法种发射天线与接收天线不同组合时检测性能的优劣。可以看出,当发收天线数一致时,不影响ZF算法的检测性能。当发射天线数大于接收天线数时,算法检测性能不受信噪比的影响。发射天线数小于接收天线数时,算法有更佳的检测性能。
11
六、参考文献
[1] GB/T 7714赵莉. MIMO检测算法[J]. 2010.
[2] 龚兵, 邓飞其. LTE系统中的MIMO检测算法[J]. 重庆理工大学学报自然科学版, 2009, 23(9):115-117.
[3] 王利勇. MIMO检测算法的研究与实现[D]. 西安电子科技大学, 2010.
[4] 肖莉. LTE系统中MIMO检测算法的研究[D]. 安徽大学, 2012.
[5] 刘文龙, 裴莹莹, 金明录. BPSK通信系统的部分最优MIMO检测算法[J]. 信号处理, 2013, 29(10):1315-1322.
[6] 陈雯柏, 李卫, 张小频. 一种低复杂度的近似最大似然
12
MIMO检测算法[J]. 哈尔滨工业大学学报, 2012, 44(5):140-143.
[7] 王灵光, 刘皓, 王军,等. MIMO检测算法研究与实现[C]// 中国西部青年通信学术会议. 2005.
主要代码 %% 经过BPSK调制的V-Blast发射矩阵X X=zeros(tx,L); for k=1:tx X(k,:)=(-1).^(A(k:tx:end)+1); End % Rayleigh信道H H=sqrt(1/2)*(randn(rx,tx,L)+i*randn (rx,tx,L)) n=sqrt(1/2)*(randn(rx,L)+i*randn(rx ,L)); R=zeros(rx,L); %%ZF检测 disp('berz');
berz=[]; for m=SNR snr=10^(m/10); 七、附录 R_noised=R+sqrt(1/snr)*n; x=[]; a=zeros(tx*L,1); for t=1:L r=R_noised(:,t); G=pinv(H(:,:,t)); y=G*r; xtemp=(y>=0)-(y<0)+0; x=[x,xtemp]; end for k=1:tx a(k:tx:end)=(x(k:tx:end)+1)/2; end [errbit,temp_ber]=biterr(A,a); berz=[berz,temp_ber];
end %% ZF-SIC(ordered)算法 disp('ZF-SIC'); 13
berzs=[];
for m=SNR m snr=10^(m/10);
for t= r= HH G= S= xt for xtemp(ki)=1*(y>= r=r-xtemp(ki)*H( en x= end for k= a(k:tx:end)=(x(k end
for k=1:tx sHat2 = [1 -1]; sHat2 = a(k:tx:end)=(x(k:tx:end)+1)/2; repmat(sHat2,[1 ,N/2]); end sHat2Mod = kron(sHat2,ones(nRx,1)); [errbit,temp_ber]=biterr(A,a); sHat2Mod = berm=[berm,temp_ber]; reshape(sHat2Mod,[nRx,nTx,N/nTx]); end J10 = sum(abs(y - zHat2),1); % %MMSE算法 sHat3 = [-1 1]; disp('MMSE') sHat3 = berm=[]; repmat(sHat3,[1 ,N/2]); for m=SNR sHat3Mod = snr=10^(m/10); kron(sHat3,ones(nRx,1)); R_noised=R+sqrt(1/snr)*n; sHat3Mod = x=[]; reshape(sHat3Mod,[nRx,nTx,N/nTx]); a=zeros(tx*L,1); zHat3 = for t=1:L squeeze(sum(h.*sHat3Mod,2)) ; r=R_noised(:,t); J01 = sum(abs(y - zHat3),1); 14 HH=H(:,:,t); sHat4 = [-1 -1]; xtemp=zeros(tx,1); sHat4 = w=inv(HH'*HH+(1/snr)*eye(tx))*HH'; repmat(sHat4,[1 ,N/2]); y=w*r; sHat4Mod =
因篇幅问题不能全部显示,请点此查看更多更全内容