900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)

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

时间:2020-03-25 18:38:00

相关推荐

大规模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 运行结果

-----------------------------------------Identification between order 2 and 20----------------------------------------->> main----- Execution Summary -----Number of users: 4Number of independent data streams per user: [3 2 1 2]numSTS: 8Number of BS transmit antennas: 64Number of receive antennas, per user: [12 8 4 8]Number of bits per sub carrier: 4Modulation: 16QAMNumber of OFDM data symbols: 10maxRange: 1000Frequency: 28000000000Maximum Sample Rate: 100000000Channel type: ScatteringNoise figure: 8Number of rays for Frf: 500-----------------------------User 1RMS EVM (%) = 0.38361BER = 0.00000; No. of Bits = 9354; No. of errors = 0User 2RMS EVM (%) = 1.0311BER = 0.00000; No. of Bits = 6234; No. of errors = 0User 3RMS EVM (%) = 2.1462BER = 0.00000; No. of Bits = 3114; No. of errors = 0User 4RMS EVM (%) = 1.0024BER = 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 , pp. 134-141.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。