主要内容

MIMO系统简介

这个例子展示了多输入多输出(MIMO)系统,它在无线通信系统的发送端和接收端使用多个天线。MIMO系统在通信系统中越来越多地被采用,因为它们在使用多天线时实现了潜在的容量增益。多天线在不改变系统带宽要求的情况下,利用时间和频率维度之外的空间维度。

对于一般通信链路,本例关注的是发送分集,而不是传统的接收分集。以平衰落瑞利信道为例,阐述了正交空时分组编码的概念,该方法适用于使用多发射机天线的情况。这里假定信道在多个收发天线对之间经历独立衰落。

对于选定的系统,它还提供了在接收端不完全估计信道时的性能下降的度量,与接收端完全了解信道的情况相比。

第一部分:发送分集vs.接收分集

利用分集接收是一种众所周知的减轻通信链路衰落影响的技术。然而,它大多被降级到接收端。在[1], Alamouti提出了一种发射分集方案,该方案在发射机上使用多个天线,提供类似的分集增益。这被认为是更实际的,例如,与蜂窝通信系统中每个移动设备的多个天线相比,它只需要在基站上安装多个天线。

本节通过模拟平坦衰落瑞利信道上的相干二相移键控(BPSK)调制,重点介绍了发射与接收分集的比较。对于发射分集,我们使用两个发射天线和一个接收天线(2x1符号),而对于接收分集,我们使用一个发射天线和两个接收天线(1x2符号)。

仿真涵盖端到端系统,显示编码和/或传输信号、信道模型以及接收信号的接收和解调。并给出了无分集链路(单收发天线情况)和二阶分集链路的理论性能进行比较。这里假定所有系统的信道在接收端都是完全已知的。我们在一系列Eb/No点上运行模拟,以生成BER结果,使我们能够比较不同的系统。

我们首先定义一些常见的仿真参数

frmLen = 100;%帧长numPackets = 1000;%包数EbNo = 0:2:20;% Eb/不变化到20dbN = 2;最大Tx天线数%M = 2;Rx天线的最大数目%

然后进行模拟。

%创建comm.BPSKModulator和comm. bpskdemomodulator系统对象(TM)P = 2;%调制顺序bpskMod = com . bpskmodulator;bpskdemodemod = com . bpsk解调器“OutputDataType”“双”);%创建com . ostbcencoder和com . ostbccombiner系统对象ostbcEnc = com . ostbcencoder;ostbcComb = com . ostbccombiner;%将Eb/No值转换为SNR值。BPSK调制器输出%产生单位功率信号。SNR = convertSNR(EbNo;“ebno”“BitsPerSymbol”1);创建com . errorrate计算器系统对象来评估误码率。errorCalc1 = com . errorrate;errorCalc2 = com . errorrate;errorCalc3 = com . errorrate;%由于AWGN函数和RANDI函数使用默认值%随机流时,执行以下命令使结果%将是可重复的,即每次运行都将获得相同的结果%的例子。文件结束时将恢复默认流%的例子。S = rng(55408);为速度预先分配变量H = 0 (frmLen, N, M);ber_noDiver = 0 (3,length(EbNo));ber_Alamouti = 0 (3,length(EbNo));ber_MaxRatio = 0 (3,length(EbNo));ber_thy2 = 0 (1,length(EbNo));
%建立可视化BER结果的图形FIG =图;网格;ax = fig. current taxes;(ax,“上”);斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax,[1军医1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Renderer =“zbuffer”;fig.Name =“发射与接收多样性”;标题(ax,“发射与接收多样性”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([15 50 25 30]);%在几个EbNo点上循环idx = 1:length(EbNo) reset(errorCalc1);重置(errorCalc2);重置(errorCalc3);%循环包的数量packetIdx = 1:表示numPackets%每帧生成数据向量data = randi([0 P-1], frmLen, 1);%调制数据modData = bpskMod(data);Alamouti时空块编码器encData = ostbcEnc(modData);%创建瑞利分布式通道响应矩阵%用于两个发射和两个接收天线H(1:N:end,:,:) = (randn(frmLen/2, N, M) +1i*randn(frmLen/2, N, M))/sqrt(2);%假定在两个符号周期内保持不变H(2:N:end,:,:) = H(1:N:end,:,:);%提取H的一部分以表示1x1, 2x1和1x2通道H11 = h (:,1,1);H21 = H(:,:,1)/sqrt(2);H12 = squeeze(H(:,1,:));%通过通道chanOut11 = H11 .* modData;chanOut21 = sum(H21;* encData, 2);* remat (modData, 1, 2);%添加AWGNrxSig11 = awgn(chanOut11,SNR(idx));rxSig21 = awgn(chanOut21,SNR(idx));rxSig12 = awgn(chanOut12,SNR(idx));% Alamouti时空块合并器decData = ostbcComb(rxSig21, H21);% ML检测器(最小欧几里得距离)demod11 = bpskDemod(rxSig11.*conj(H11));demod21 = bpskDemod(decData);demod12 = bpskDemod(sum(rxSig12.*conj(H12), 2));计算并更新当前EbNo值的误码率%用于未编码的1x1系统ber_noDiver(:,idx) = errorCalc1(data, demod11);%的阿拉莫蒂编码2x1系统ber_Alamouti(:,idx) = errorCalc2(data, demod21);%的最大比例组合1x2系统ber_MaxRatio(:,idx) = errorCalc3(data, demod12);结束% numPackets FOR循环结束计算当前EbNo的理论二阶分集误码率ber_thy2(idx) = berfading(EbNo(idx)),相移键控的, 2,2);%绘图结果semilogy (ax, EbNo (1: idx) ber_noDiver (1,1: idx),的r *EbNo (1: idx) ber_Alamouti (1,1: idx),“去”EbNo (1: idx) ber_MaxRatio (1,1: idx),“废话”EbNo (1: idx) ber_thy2 (1: idx),“米”);传奇(ax,“没有多样性(1Tx, 1Rx)”“阿拉巴马州(2Tx, 1Rx)”“最大比率组合(1Tx, 2Rx)”“理论二阶多样性”);drawnow;结束%结束for循环的EbNo进行曲线拟合并重新绘制结果fitBER11 = berfit(EbNo, ber_noDiver(1,:));fitBER21 = berfit(EbNo, ber_Alamouti(1,:));fitBER12 = berfit(EbNo, ber_MaxRatio(1,:));semilogy (ax, EbNo, fitBER11“r”, EbNo, fitBER21,‘g’, EbNo, fitBER12,“b”);(ax,“关闭”);%恢复默认流rng(年代);

发射分集系统的计算复杂度与接收分集系统非常相似。

仿真结果表明,采用两根发射天线和一根接收天线的分集顺序与采用一根发射天线和两根接收天线的最大比组合(MRC)系统的分集顺序相同。

还观察到,与MRC接收分集相比,发射分集有3db的劣势。这是因为我们将两种情况下的总传输功率建模为相同的。如果我们校准发射功率,使这两种情况下的接收功率相同,那么性能将是相同的。二阶分集链路的理论性能与发射分集系统相匹配,因为它对所有分集分支的总功率进行了归一化。

附带的功能脚本,mrc1m.mostbc2m.m帮助感兴趣的用户进一步探索。

第2部分:空时分组编码与信道估计

在正交设计理论的基础上,Tarokh等。[2将Alamouti的发射分集方案推广到任意数量的发射天线,从而产生了空时分组码的概念。对于复杂的信号星座,他们表明Alamouti的方案是唯一的两个发射天线的全速率方案。

在本节中,我们研究了具有和不具有信道估计的两个接收天线(即2x2系统)的这种方案的性能。在接收器不知道信道状态信息的实际场景中,必须从接收到的信号中提取这些信息。我们假设信道估计器使用预加到每个数据包的正交导频信号来执行此操作[3.]。假设信道在数据包的长度内保持不变(即,它经历缓慢衰落)。

本文采用了与前一节中描述的类似的仿真方法,这使我们能够估计使用两个发射天线和两个接收天线的空时分组编码系统的误码率性能。

我们再次从定义常见的仿真参数开始

frmLen = 100;%帧长maxnumbers = 300;%最大错误数maxNumPackets = 3000;%最大包数EbNo = 0:2:12;% Eb/不变化到12dbN = 2;% Tx天线数M = 2;Rx天线的%数目pLen = 8;每帧导频符号的%数目W = hadamard(pLen);飞行员= W(:, 1:N);每个发射天线的正交集%

然后进行模拟。

创建一个comm.MIMOChannel System对象,在空间上模拟2x2%独立的平衰落瑞利信道chan = com . mimochannel (“MaximumDopplerShift”0,“SpatialCorrelationSpecification”“没有”“NumTransmitAntennas”N“NumReceiveAntennas”米,“PathGainsOutputPort”,真正的);%修改hAlamoutiDec系统的numreceive天线属性值%对象到M,即2释放(ostbcComb);ostbcComb。numreceiveantenna = M;%设置全局随机流以实现可重复性S = rng(55408);为速度预先分配变量HEst = 0 (frmLen, N, M);ber_Estimate = 0 (3,length(EbNo));ber_Known = 0 (3,length(EbNo));
%建立可视化BER结果的图形FIG =图;网格;ax = fig. current taxes;(ax,“上”);斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax,[1军医1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Name =正交空时分组编码;fig.Renderer =“zbuffer”;标题(ax,“阿拉莫蒂编码2x2系统”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([41 50 25 30]);%在几个EbNo点上循环idx = 1:length(EbNo) reset(errorCalc1);重置(errorCalc2);%循环直到错误数超过'maxNumErrs'%或已模拟的最大数据包数(ber_Estimate(2,idx) < maxNumErrs) &&(ber_Known(2,idx) < maxNumErrs) &&(ber_Estimate(3,idx)/frmLen < maxNumPackets)%每帧生成数据向量data = randi([0 P-1], frmLen, 1);%调制数据modData = bpskMod(data);Alamouti时空块编码器encData = ostbcEnc(modData);为每一帧添加导频符号txSig =[飞行员;encData];%通过2x2通道重置(陈);[chanOut, H] = chan(txSig);%添加AWGNrxSig = awgn(chanOut,SNR(idx));%信道估计%每个链接=> N*M个估计HEst(1,:,:) = pilots(:,:)。' * rxSig(1:pLen,:) / pLen;%假设在整个帧中保持不变HEst = HEst(ones(frmLen, 1),:,:);%使用估计信道的合并器decDataEst = ostbcComb(rxSig(pLen+1:end,:), HEst);%使用已知信道的合并器decDataKnown = ostbcComb(rxSig(pLen+1:end,:),挤压(H(全+ 1:结束 ,:,:,:)));% ML检测器(最小欧几里得距离)demodEst = bpskDemod(decDataEst);%估计demodKnown = bpskDemod(decDataKnown);%已知计算并更新当前EbNo值的误码率估计信道百分比ber_Estimate(:,idx) = errorCalc1(data, demodEst);已知信道%ber_Known(:,idx) = errorCalc2(data, demodKnown);结束% numPackets FOR循环结束%绘图结果semilogy (ax, EbNo (1: idx) ber_Estimate (1,1: idx),“罗”);semilogy (ax, EbNo (1: idx) ber_Known (1,1: idx),“g *”);传奇(ax, [“信道估计”num2str(全)导频符号/帧],“已知的通道”);drawnow;结束%结束for循环的EbNo进行曲线拟合并重新绘制结果fitBEREst = berfit(EbNo, ber_Estimate(1,:));fitBERKnown = berfit(EbNo, ber_Known(1,:));semilogy (ax, EbNo, fitBEREst“r”不,不知道,‘g’);(ax,“关闭”);%恢复默认流rng (s)

对于2x2模拟系统,分集顺序与上一节中1x2或2x1系统的分集顺序不同。

请注意,对于每100个数据符号有8个导频符号,信道估计会导致所选Eb/No范围的性能下降约1 dB。这随着每帧导频符号数量的增加而改善,但增加了链路的开销。在这种比较中,我们在两种情况下保持每个符号的传输信噪比相同。

附带的功能脚本,ostbc2m_e.m为感兴趣的用户提供进一步的实验。

第三部分:正交空时分组编码及其进一步探索

在最后一节中,我们给出了使用四根发射天线(4x1系统)使用半速率码G4的正交空时分组编码的一些性能结果。4]。

我们期望该系统提供4的分集顺序,并将其与具有相同分集顺序的1x4和2x2系统进行比较。为了进行公平的比较,我们将四元PSK与半速率G4代码一起使用,以实现1比特/秒/Hz的相同传输速率。

在单个内核上生成这些结果需要一些时间。如果您没有安装并行计算工具箱™(PCT),我们将加载先前模拟的结果。函数脚本ostbc4m.m是包括的,哪个,还有mrc1m.mostbc2m.m,用于生成这些结果。如果安装了PCT,这些模拟将并行执行。在本例中是功能性脚本ostbc4m_pct.mmrc1m_pct.mostbc2m_pct.m使用。建议用户使用这些脚本作为学习其他代码和系统的起点。

[licensep,~] = license()“签出”“Distrib_Computing_Toolbox”);如果(licensep && ~isempty(ver())“平行”))) EbNo = 0:2:20;[ber11, ber14, ber22, ber41] = mimostbcwithpct (100,4e3,EbNo);其他的负载ostbcRes.mat;结束%建立可视化BER结果的图形FIG =图;网格;ax = fig. current taxes;(ax,“上”);fig.Renderer =“zbuffer”;斧子。YScale =“日志”;xlim (ax, [EbNo (1) EbNo(结束)]);ylim (ax, [1 e-5 1]);包含(ax,“Eb /不(dB)”);ylabel (ax,“方方面面”);fig.NumberTitle =“关闭”;fig.Name =正交空时分组编码(二);标题(ax,“g4编码4x1系统及其他比较”);集(图,“DefaultLegendAutoUpdate”“关闭”);fig.Position = figposition([30 15 25 30]);QPSK四阶分集的理论性能BERthy4 = ber褪色;相移键控的, 4,4);%绘图结果semilogy (ax, EbNo, ber11的r *no, no, ber41;“女士”, no, ber22;“c ^”EbNo ber14,“柯”4、BERthy4、‘g’);传奇(ax,无分集(1Tx, 1Rx), BPSK'OSTBC (4Tx, 1Rx), QPSK'“阿拉巴马州(2Tx, 2Rx), BPSK”最大比率组合(1Tx, 4Rx), BPSK理论四阶分集,QPSK);%进行曲线拟合fitBER11 = berfit(EbNo, ber11);fitBER41 = berfit(EbNo(1:9), ber41(1:9));fitBER22 = berfit(EbNo(1:8), ber22(1:8));fitBER14 = berfit(EbNo(1:7), ber14(1:7));semilogy (ax, EbNo, fitBER11“r”, EbNo(1:9), fitBER41,“米”fitBER22 EbNo (1:8),“c”, EbNo(1:7), fitBER14,“k”);(ax,“关闭”);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数量:6)。

正如预期的那样,4x1、2x2和1x4系统的相似的BER曲线斜率表明每个系统具有相同的分集顺序。

还要观察4x1系统的3db损失,这可以归因于对三个系统中的每个系统所做的相同的总传输功率假设。如果我们校准发射功率,使每个系统的接收功率相同,那么这三个系统的性能将相同。同样,理论性能与4x1系统的仿真性能相匹配,因为总功率在分集分支上归一化。

附录

这个例子使用了以下辅助函数:

参考文献

  1. S. M. Alamouti,“用于无线通信的一种简单的传输分集技术”,IEEE®通信选择领域杂志,第16卷,第8期,1998年10月,第1451-1458页。

  2. 陈晓明,“基于正交设计的空时分组码”,《信息理论学报》,第45卷,第5期,1999年7月,第1456-1467页。

  3. A.F. Naguib, V. Tarokh, N. Seshadri和A.R. Calderbank,“高数据速率无线通信的空时码:失配分析”,IEEE国际通信会议论文集,第309-313页,1997年6月。

  4. V. Tarokh, H. Jafarkhami, A.R. Calderbank,“无线通信的空时分组码:性能结果”,《IEEE通讯选择领域杂志》,第17卷,第3期,1999年3月,第451-460页。