✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
大规模多输入多输出(MIMO)技术能够大幅度提升系统容量,降低不同用户间的干扰,但因其系统中信道维度高、信道估计和预编码算法复杂等因素,使得系统软硬件开销都会增大。将大规模MIMO系统的预编码算法分为数字、模拟和混合3种类型,并对3类预编码算法进行了归纳对比,总结出不同预编码算法的优缺点和适用场景。将信道估计方案分为训练估计和盲估计,归纳总结了2类方案的优缺点,并指出合理利用大规模MIMO的信道稀疏性能够改善信道估计的质量,减少估计开销。
⛄ 部分代码
clear all
close all
snrValuesDB = -40:5:0; %in Figures
snrValues = 10.^(snrValuesDB./10);
tryNumber = 100;
%% Fig4 Parameters
parameters_Fig4 = containers.Map('KeyType','char','ValueType','any');
parameters_Fig4('numberTransmitAntennas') = 256; % Number of transmit antennas
parameters_Fig4('numberRecieveAntennas') = 64; % Number of receive antennas
parameters_Fig4('numberDataStreams') = 1; % Number of data streams
parameters_Fig4('numberRFChains') = 6; % Number of RF chains for precoding and combining
parameters_Fig4('numberCluster') = 8; % Number of clusters
parameters_Fig4('numberRayPerCluster') = 10; % Number of rays per cluster
parameters_Fig4('angularSpread') = 7.5; % Angular spread of 7.5 degree
spectralEffOptimal = zeros(tryNumber,length(snrValues));
spectralEffHybrid = zeros(tryNumber,length(snrValues));
spectralEffBeam = zeros(tryNumber,length(snrValues));
for s = 1:length(snrValues)
SNR = snrValues(s);
for i = 1:tryNumber
channel = ChannelGeneration(parameters_Fig4);
tempObj = OptimalUnconstraint(SNR,channel);
spectralEffOptimal(i,s) = tempObj.spectralEfficiency;
tempObj = HybridSparsePrecoding(SNR,channel);
spectralEffHybrid(i,s) = tempObj.spectralEfficiency;
tempObj = BeamSteering(SNR,channel);
spectralEffBeam(i,s) = tempObj.spectralEfficiency;
end
end
% Averaging Tries
spectralEffOptimalSNR = mean(spectralEffOptimal,1);
spectralEffHybridSNR = mean(spectralEffHybrid,1);
spectralEffBeamSNR = mean(spectralEffBeam,1);
% figure();
hold on
l1 = plot(snrValuesDB,spectralEffOptimalSNR,'-s','Color',[0 0.5 0],'LineWidth',2.0,'MarkerSize',8.0);
l2 = plot(snrValuesDB,spectralEffHybridSNR,'-o','Color',[0 0.45 0.74],'LineWidth',2.0,'MarkerSize',8.0);hold on;
l3 = plot(snrValuesDB,spectralEffBeamSNR,'-d','Color',[0.85 0.33 0.1],'LineWidth',2.0,'MarkerSize',8.0);hold on;
%% Data stream
parameters_Fig4('numberDataStreams') = 2; % Number of data streams
spectralEffOptimal = zeros(tryNumber,length(snrValues));
spectralEffHybrid = zeros(tryNumber,length(snrValues));
for s = 1:length(snrValues)
SNR = snrValues(s);
for i = 1:tryNumber
channel = ChannelGeneration(parameters_Fig4);
tempObj = OptimalUnconstraint(SNR,channel);
spectralEffOptimal(i,s) = tempObj.spectralEfficiency;
tempObj = HybridSparsePrecoding(SNR,channel);
spectralEffHybrid(i,s) = tempObj.spectralEfficiency;
end
end
% Averaging Tries
spectralEffOptimalSNR = mean(spectralEffOptimal,1);
spectralEffHybridSNR = mean(spectralEffHybrid,1);
spectralEffBeamSNR = mean(spectralEffBeam,1);
l4 = plot(snrValuesDB,spectralEffOptimalSNR,'-s','LineWidth',2.0,'MarkerSize',8.0);
l5 = plot(snrValuesDB,spectralEffHybridSNR,'-o','LineWidth',2.0,'MarkerSize',8.0);hold on;
legend([l1 l2 l3 l4 l5],'Optimal unconstrained precoding N_s = 1','Hybrid precoding and combining N_s = 1','Beam steering N_s = 1','Optimal unconstrained precoding N_s = 2','Hybrid precoding and combining N_s = 2','Location','northwest','FontSize', 15);
xlabel('SNR (dB)','FontSize', 20)
ylabel('Spectral Efficiency(bits/s/Hz)','FontSize', 20)
⛄ 运行结果
⛄ 参考文献
[1] 邹卫霞, 张然. 一种在毫米波MIMO系统中基于分层设计的迭代混合预编码方法:.
[2] 张钰, 赵雄文. 毫米波大规模MIMO系统中的预编码技术[J]. 中兴通讯技术, 2018, 24(3):6.
[1] 宗慧吉祥. 毫米波MIMO系统中的子天线阵列预编码算法研究[J]. 电视技术, 2017, 41(1):53-57.
[2] 郑兴林、王月、刘伟. 毫米波MIMO系统中部分连接型混合预编码设计[J]. 计算机工程与应用, 2020, 56(18):7.
[3] 孙霁含, 邱玲. 毫米波MIMO系统中基于射频链路选择的高能效混合预编码设计[J]. 中国科学院大学学报, 2018, 35(5):8.