大规模MIMO通信系统的发射端采用混合波束成形(Matlab代码实现)
👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥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: 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.
相关文章
- matlab图像处理初步,MATLAB数字图像处理初步「建议收藏」
- matlab 求矩阵秩,求Matlab中矩阵的秩和迹 | 学步园[通俗易懂]
- Matlab:语音信号处理与滤波
- matlab griddata nan,请教Matlab的griddata的用法
- matlab创建控件失败win7,Win7系统无法安装ActiveX控件的解决方法
- matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」
- matlab怎么对语音信号处理,语音信号处理MATLAB程序
- 如何用matlab编写分段函数_请教各位怎样用matlab定义一个分段函数MATLAB分段函数…[通俗易懂]
- matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现
- matlab测试部分,验证、确认和测试 – MATLAB 和 Simulink 解决方案 – MATLAB & Simulink
- matlab 稀疏矩阵 乘法,Matlab 矩阵运算[通俗易懂]
- MATLAB 矢量图(风场、电场等)标明矢量大小的方法——箭头比例尺及风矢杆图的绘制
- MATLAB好玩的代码_Matlab代码
- matlab解析int8数据为double_matlab把double转成int
- unit在matlab中啥意思,unit8(matlab中uint8函数)
- bp神经网络及matlab实现_bp神经网络应用实例Matlab
- matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型
- matlab微分方程组_matlab求微分方程特解
- matlab求解不定方程组_matlab解参数方程组
- butterworth matlab,Matlab实现Butterworth滤波器
- matlab 图像填充斜线_怎么更改柱形图的填充
- matlab plot函数详解_MATLAB的plot
- MATLAB的循环_matlab循环输出
- 好玩的matlab程序_matlab怎么停止运行程序
- Matlab赋值_matlab二维数组赋值
- Matlab由三维散点绘制三维曲面(含等高线,剖面图)「建议收藏」
- matlab 汽车振动,基于MatLab的车辆振动响应幅频特性分析
- Matlab循环语句_matlab中if语句的用法
- Matlab函数定义_matlab子函数
- matlab 怎么使用function,Matlab中function函数使用操作方法
- 一种基于交叉选择的柯西反向鲸鱼优化算法QOWOA附matlab代码
- 商业数学软件Matlab最新中文版,Matlab软件2023安装教程下载
- 【MATLAB】基本绘图 ( 绘图基本步骤 | plot 函数 | 多曲线绘制 | hold on / off )
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- 抛弃MATLAB,一本书掌握Python强大的绘图库Matplotlib
- 在Linux系统下使用Matlab(matlablinux)
- 快速安装Linux上的MATLAB(linux安装matlab)