基于卡尔曼的混合预编码技术用于多用户毫米波大规模MIMO系统研究(Matlab代码实现)

2024-01-21

???????????????? 欢迎来到本博客 ❤️❤️????????

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

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

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Matlab代码及文章


????1 概述

摘要 60 GHz频段的毫米波(mmWave)通信需要在发送和接收端都使用大型天线阵列来实现波束成形增益,以抵消高路径损耗。由于在这些频率下存在硬件约束,完全数字化的技术在大型天线阵列上是不可行的,而纯模拟解决方案则存在严重的性能限制。混合模拟/数字波束成形是一种有前途的解决方案,特别是在扩展到多用户场景时。本文提出了三个主要贡献:(i)提出了基于卡尔曼的混合模拟/数字预编码在多用户环境中的公式化,(ii)制定了传输数据和估计数据之间误差的分析表达式,以便基站(BS)上的卡尔曼算法不需要移动站(MSs)上估计数据的信息,而是仅依赖于预编码/合并矩阵,(iii)设计了一个迭代解决方案,用于成本可承受的复杂度的混合预编码方案。仿真结果证实了所提方法在误码率和频谱效率方面的显着改进-在20 dB时几乎达到了7 bps/Hz,在具有10个信道路径的情况下,相对于仅模拟波束成形,以及在相同条件下几乎达到了1 bps/Hz相对于混合最小均方误差(MMSE)预编码。

索引词条 混合波束成形,卡尔曼滤波器,毫米波,大规模MIMO

I. 引言
毫米波(mmWave)频段通信是解决未来5G系统中频谱短缺的关键技术[1]–[7]。由于亚6GHz频段中可用频谱有限,传统的蜂窝和基于WiFi的解决方案无法扩展以满足不断增长的网络密集化数据需求,以及与数据中心和移动设备相关的新兴应用。虽然已经提出了利用有牌照频谱的机会性基础的创新解决方案[8],但这些方法仍然经常受到干扰,并且受限于有牌照频段中可用的信道带宽,例如电视频段。最近在57-71GHz范围内开放的无牌照频谱连续块中的毫米波(mmWave)频段通信是实现每秒千兆位数据速率的机会[9]。事实上,像IEEE 802.11ad这样的现有标准在这些频段上运行,允许用于短距离通信的高达2GHz宽的信道。

• MmWave挑战:由于毫米波频段的高路径损耗特性,需要利用基站(BS)和移动站(MSs)上的大型天线阵列进行定向波束成形[10]–[13]。这使得可以实现高质量和远距离通信链路,并增加了集中在接收端的信号功率。高频率的操作也从设计的角度支持大规模多天线架构,同时减小了每个天线的尺寸,并允许将许多天线打包在一个小区域内。详细文章见第4部分。

???? 2 运行结果

部分代码:

Num_users=4; % Number of users
TX_ant=64; %Number of UPA TX antennas
TX_ant_w=sqrt(TX_ant); % width
TX_ant_h=sqrt(TX_ant); % hieght
ind_TX_w=reshape(repmat([0:1:TX_ant_w-1],TX_ant_h,1),1,TX_ant_w*TX_ant_h);
ind_TX_h=repmat([0:1:TX_ant_h-1],1,TX_ant_w);

RX_ant=4; %Number of UPA RX antennas
RX_ant_w=sqrt(RX_ant); % width
RX_ant_h=sqrt(RX_ant); % hieght
ind_RX_w=reshape(repmat([0:1:RX_ant_w-1],RX_ant_h,1),1,RX_ant_w*RX_ant_h);
ind_RX_h=repmat([0:1:RX_ant_h-1],1,RX_ant_w);

% ----------------------------- Channel Parameters ------------------------
Num_paths=10; %Number of channel paths

% ----------------------------- Simulation Parameters ---------------------
SNR_dB_range=-10:5:20;  % SNR in dB
Rate_SU=zeros(1,length(SNR_dB_range)); % Will carry the single-user MIMO rate (without interference)
Rate_BS=zeros(1,length(SNR_dB_range));% Will carry the rate with analog-only beamsteering
Rate_HP=zeros(1,length(SNR_dB_range)); % Will carry the rate of hybrid ZF precoding
Rate_HP_MSE=zeros(1,length(SNR_dB_range)); % Will carry the rate of the hybrid MMSE precoder
Rate_HP_Kalman=zeros(1,length(SNR_dB_range)); % Will carry the rate of the proposed hybrid Kalman precoder
Rate_HP_FD_ZF=zeros(1,length(SNR_dB_range)); % Will carry the rate of the fully digital hybrid ZF precoding
Rate_HP_FD_MSE=zeros(1,length(SNR_dB_range)); % Will carry the rate of the fully digital hybrid MMSE precoding

ITER=500; % Number of iterations

% --------------- Simulation starts ---------------------------------------
for iter=1:1:ITER
% Generate user channels
[H,a_TX,a_RX]=generate_channels(Num_users,TX_ant_w,TX_ant_h,RX_ant_w,RX_ant_h,Num_paths);
% H is a 3-dimensional matrix, with Num_users,RX_ant,TX_ant dimensions


% Stage 1 of the proposed algorithm (Analog precoding)
Frf=zeros(TX_ant,Num_users); % BS RF precoders
Wrf=zeros(RX_ant,Num_users); % MS RF precoders

for u=1:1:Num_users
Frf(:,u)=a_TX(:,u);
Wrf(:,u)=a_RX(:,u);
end

% Constructin the effective channels
for u=1:1:Num_users
Channel=zeros(RX_ant,TX_ant);
Channel(:,:)= H(u,:,:);
He(u,:)=Wrf(:,u)'*Channel*Frf ;    % Effective channels
end

% effective channel for fully digital precoding

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

Anna Vizziello, Pietro Savazzi, Kaushik R. Chowdhury (2018) .

???? 4 Matlab代码及文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于卡尔曼的混合预编码技术用于多用户毫米波大规模MIMO系统研究(Matlab代码实现) 的相关文章

  • 在 Matlab 中保存当前运行的脚本

    有没有办法保存Matlab中当前运行的脚本 我有一个脚本 它会自动备份一组脚本 但如果我更改了当前脚本 则保存的版本将过期 也许可以调用一些java Thanks 在 Yair Altman 网站上的某个地方 请参阅我的其他答案中的链接 他
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b

随机推荐