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

     

    1. -----------------------------------------
    2. Identification between order 2 and 20
    3. -----------------------------------------
    4. >> main
    5. ----- Execution Summary -----
    6. Number of users: 4
    7. Number of independent data streams per user: [3 2 1 2]
    8. numSTS: 8
    9. Number of BS transmit antennas: 64
    10. Number of receive antennas, per user: [12 8 4 8]
    11. Number of bits per sub carrier: 4
    12. Modulation: 16QAM
    13. Number of OFDM data symbols: 10
    14. maxRange: 1000
    15. Frequency: 28000000000
    16. Maximum Sample Rate: 100000000
    17. Channel type: Scattering
    18. Noise figure: 8
    19. Number of rays for Frf: 500
    20. -----------------------------
    21. User 1
    22. RMS EVM (%) = 0.38361
    23. BER = 0.00000; No. of Bits = 9354; No. of errors = 0
    24. User 2
    25. RMS EVM (%) = 1.0311
    26. BER = 0.00000; No. of Bits = 6234; No. of errors = 0
    27. User 3
    28. RMS EVM (%) = 2.1462
    29. BER = 0.00000; No. of Bits = 3114; No. of errors = 0
    30. User 4
    31. RMS EVM (%) = 1.0024
    32. BER = 0.00000; No. of Bits = 6234; No. of errors = 0
    33. >>
    34. >>

    -----------------------------------------
    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.

  • 相关阅读:
    在连接效率不高的时代,中心化的“星状结构”是
    BSA-maltose 牛血清白蛋白修饰麦芽糖 BSA-麦芽糖
    ArcGIS地图投影与坐标系转换的方法
    .NET餐厅管理系统user数据帮助类判断是否存在管理员、判断管理员密码是否正确、判断用户是否存在、判断用户密码是否正确、查找管理员姓名
    Go ---- godog的使用
    [安洵杯 2019]easy_web-1
    大数据驱动业务增长:数据分析和洞察力的新纪元
    K8S部署ECK采集日志
    LCR 052.递增顺序搜索树
    ROS 工作空间
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/128082518