大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)

 ‍个人主页:研学社的博客 

欢迎来到本博客❤️❤️

博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

本文目录如下:

目录

1 概述

2 运行结果

3 Matlab代码实现

4 参考文献


1 概述

本文 说明 了 如何 在 大规模 MIMO 通信 系统 的 发射 端 采用 混合 波束 成形, 同时 使用 多 用户 和 单 用户 系统 的 技术。该示例采用全通道探测来确定发射机的通道状态信息。它将所需的预编码划分为数字基带和模拟RF组件,对多用户和单用户系统使用不同的技术。简化的全数字接收器可恢复多个传输的数据流,以突出显示通信系统的常见品质因数,即EVM和BER。

该示例采用基于散射的空间信道模型,该模型考虑了发射/接收空间位置和天线方向图。还提供更简单的静态扁平MIMO通道,用于链路验证目的。

对高数据速率和更多用户容量的需求不断增长,因此需要更有效地使用可用频谱。多用户 MIMO (MU-MIMO) 允许基站 (BS) 发射器使用相同的时频资源与多个移动站 (MS) 接收器同时通信,从而提高频谱效率。大规模MIMO允许BS天线元件的数量达到数十或数百个,从而也将小区中的数据流数量增加到一个很大的值。

下一代 5G 无线系统使用毫米波 (mmWave) 频段来利用其更宽的带宽。5G系统还部署了大规模天线阵列,以减轻毫米波频段的严重传播损耗。

与当前的无线系统相比,毫米波频段的波长要小得多。虽然这允许阵列在同一物理尺寸内包含更多元件,但为每个天线元件提供一个发射-接收(TR)模块或RF链的成本要高得多。混合收发器是一种实用的解决方案,因为它们在RF中使用模拟波束成形器和在基带域中使用数字波束成形器的组合,RF链少于发射元件的数量[1]。

本例使用多用户MIMO-OFDM系统,突出显示发射端所需预编码对其数字基带和RF模拟组件的分区。本例以相控阵MIMO-OFDM预编码示例中突出显示的系统为基础,展示了发送端预编码矩阵的制定及其在MIMO-OFDM系统中的应用。

2 运行结果

大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)_第1张图片

 大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)_第2张图片

-----------------------------------------
Identification between order 2 and 20
-----------------------------------------
>> main

----- Execution Summary -----
Number of users: 4
Number of independent data streams per user: [3  2  1  2]
numSTS: 8
Number of BS transmit antennas: 64
Number of receive antennas, per user: [12   8   4   8]
Number of bits per sub carrier: 4
Modulation: 16QAM
Number of OFDM data symbols: 10
maxRange: 1000
Frequency: 28000000000
Maximum Sample Rate: 100000000
Channel type: Scattering
Noise figure: 8
Number of rays for Frf: 500


-----------------------------
User 1
  RMS EVM (%) = 0.38361
  BER = 0.00000; No. of Bits = 9354; No. of errors = 0
User 2
  RMS EVM (%) = 1.0311
  BER = 0.00000; No. of Bits = 6234; No. of errors = 0
User 3
  RMS EVM (%) = 2.1462
  BER = 0.00000; No. of Bits = 3114; No. of errors = 0
User 4
  RMS EVM (%) = 1.0024
  BER = 0.00000; No. of Bits = 6234; No. of errors = 0
>> 
>> 

-----------------------------------------
Identification between order 2 and 20
-----------------------------------------
>> main

----- Execution Summary -----
Number of users: 4
Number of independent data streams per user: [3  2  1  2]
numSTS: 8
Number of BS transmit antennas: 64
Number of receive antennas, per user: [12   8   4   8]
Number of bits per sub carrier: 4
Modulation: 16QAM
Number of OFDM data symbols: 10
maxRange: 1000
Frequency: 28000000000
Maximum Sample Rate: 100000000
Channel type: Scattering
Noise figure: 8
Number of rays for Frf: 500


-----------------------------
User 1
  RMS EVM (%) = 0.38361
  BER = 0.00000; No. of Bits = 9354; No. of errors = 0
User 2
  RMS EVM (%) = 1.0311
  BER = 0.00000; No. of Bits = 6234; No. of errors = 0
User 3
  RMS EVM (%) = 2.1462
  BER = 0.00000; No. of Bits = 3114; No. of errors = 0
User 4
  RMS EVM (%) = 1.0024
  BER = 0.00000; No. of Bits = 6234; No. of errors = 0
>> 
>> 

3 Matlab代码实现

部分代码:

% Multi-user system with single/multiple streams per user
prm.numUsers = 4;                   % Number of users
prm.numSTSVec = [3 2 1 2];          % Number of independent data streams per user
prm.numSTS = sum(prm.numSTSVec);    % Must be a power of 2
prm.numTx = prm.numSTS * 8;         % Number of BS transmit antennas (power of 2)
prm.numRx = prm.numSTSVec * 4;      % Number of receive antennas, per user (any >= numSTSVec)

% Each user has the same modulation
prm.bitsPerSubCarrier = 4;          % 2: QPSK, 4: 16QAM, 6: 64QAM, 8: 256QAM
prm.numDataSymbols = 10;            % Number of OFDM data symbols

% MS positions: assumes BS at origin
%   Angles specified as [azimuth;elevation] degrees
%   az in range [-180 180], el in range [-90 90], e.g. [45;0]
maxRange = 1000;                    % all MSs within 1000 meters of BS
prm.mobileRanges = randi([1 maxRange], 1, prm.numUsers);
prm.mobileAngles = [rand(1, prm.numUsers) * 360 - 180; ...
                    rand(1, prm.numUsers) * 180 - 90];

prm.fc = 28e9;                      % 28 GHz system
prm.chanSRate = 100e6;              % Channel sampling rate, 100 Msps
prm.ChanType = 'Scattering';        % Channel options: 'Scattering', 'MIMO'
prm.NFig = 8;                       % Noise figure (increase to worsen, 5-10 dB)
prm.nRays = 500;                    % Number of rays for Frf, Fbb partitioning

%% DEFINE OFDM MODULATION PARAMETERS USEDS FOR THE SYSTEM   %%%%%%%%%%%%%%%

prm.FFTLength = 256;
prm.CyclicPrefixLength = 64;
prm.numCarriers = 234;              % Number of carries
prm.NullCarrierIndices = [1:7 129 256-5:256]'; % Guards and DC
prm.PilotCarrierIndices = [26 54 90 118 140 168 204 232]';
nonDataIdx = [prm.NullCarrierIndices; prm.PilotCarrierIndices];
prm.CarriersLocations = setdiff((1:prm.FFTLength)', sort(nonDataIdx));

numSTS = prm.numSTS;
numTx = prm.numTx;
numRx = prm.numRx;
numSTSVec = prm.numSTSVec;
codeRate = 1/3;                     % same code rate per user
numTails = 6;                       % number of termination tail bits
prm.numFrmBits = numSTSVec.* (prm.numDataSymbols * prm.numCarriers * ...
                 prm.bitsPerSubCarrier * codeRate) - numTails;
prm.modMode = 2 ^ prm.bitsPerSubCarrier; % Modulation order
% Account for channel filter delay
numPadSym = 3;                      % number of symbols to zeropad
prm.numPadZeros = numPadSym* (prm.FFTLength + prm.CyclicPrefixLength);

%% DEFINE TRANSMITE AND RECEIVE ARRAYS AND %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% POSITIONAL PARAMETERS FOR THE SYSTEM %%%%%%%%%%%%%%%%%%%%

prm.cLight = physconst('LightSpeed');
prm.lambda = prm.cLight / prm.fc;

% Get transmit and receive array information
[isTxURA, expFactorTx, isRxURA, expFactorRx] = helperArrayInfo(prm, true);

4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] Molisch, A. F., et al. "Hybrid Beamforming for Massive MIMO: A Survey." IEEE Communications Magazine, Vol. 55, No. 9, September 2017, pp. 134-141.

你可能感兴趣的:(#,#,#,MIMO通信系统,matlab,发射端采用混合波束)