基于卡尔曼的混合预编码技术用于多用户毫米波大规模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 数组中的 DICOM 维度(所有帧都以数组的最后一个维度结束)

    在我的 GUI 之一中 我加载 DICOM 图像 有时它们只是一个体积和另一个维度 当我将它们加载到 Matlab 中时 一切都会到达我想要的位置 handles inf dicominfo filepath filename handle
  • 将 MATLAB 绘图转换为图像

    我生成了一个类似的情节 figure hold axis 0 10 0 10 fill 1 1 5 5 5 1 1 5 b 现在我想将此图作为矩阵 以便我可以用高斯过滤博客 谷歌搜索我发现了这个线程将绘图光栅化为图像 http www ma
  • MATLAB中给定一组向量,如何获得最大独立向量?

    如果给我一组向量 它们可以作为矩阵的列向量提供 并且我想获得最大独立向量 那么最好的方法是什么 我可以一次向结果集中添加一个向量 看看新形成的矩阵的秩是否增加 但我感觉效率不是很高 当然 我可以回去做高斯消元法来解决这个问题 但我只是想知道
  • 如何在Matlab中向结构体数组添加新元素?

    如何向结构体数组添加新元素 我无法连接空结构 gt gt a struct gt gt a f1 hi a f1 hi gt gt a f2 bye a f1 hi f2 bye gt gt a cat 1 a struct Error u
  • 在 MATLAB 中使用 sprintf 显示变量的小数

    我不明白接下来会发生什么sprintf http www mathworks se help techdoc ref sprintf html命令 gt gt vpa exp 1 53 ans 2 718281828459045534884
  • 使用每行的列索引向量提取矩阵元素

    我有一个MxN矩阵 我想要一个列向量v 使用向量s它告诉我对于矩阵中的每一行我将采用哪一列 这是一个例子 Matrix 4 13 93 20 42 31 18 94 64 02 7 44 24 91 15 11 20 43 38 31 21
  • 从 Excel 读取字符串到 Matlab 中?

    我想从 Excel 文件中将字符串读入 Matlab ID xlsread data xlsx 1 D2 D4 D2 D4 范围内的单元格中包含字符串 当我尝试将字符串导入 Matlab 时 我得到的只是一个空列表 我能做什么来解决这个问题
  • 与 Matlab 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • 分割车牌字符

    我在从车牌图像中分割字符时遇到问题 我应用了以下方法来提取车牌字符 车牌图像的自适应阈值 选择具有特定纵横比的轮廓 如果车牌图像中有任何阴影 如附件中所示 由于二值化不正确 我无法正确分割字符 图像中的阴影合并图像中的相邻字符 我已经对具有
  • 有没有办法在 mex 文件中制作 try-catch 语句?

    我知道在 C 中没有内置的方法来执行 try catch 语句 但是 MATLAB 是否为 MEX 文件提供了任何类型的 try catch 功能 我尝试使用Longjmp and Setjmp以中描述的方式http www di unip
  • 在python中访问包含matlab类的.mat文件

    我有一个从 matlab 2012b 生成的 mat 文件 它包含一个带有用户定义的 matlab 类的变量 在 python 3 3 中使用 scipy io loadmat 加载文件时 我得到以下信息 mat scipy io load
  • 在不同长度的数组中查找相同的日期时间

    考虑以下儒略日期数组 Jday1 datenum 2011 01 01 00 00 yyyy mm dd HH MM 60 60 24 datenum 2011 12 31 23 00 yyyy mm dd HH MM Jday2 date
  • 结合阴影误差和实线平均值的图例

    我在用此 FEX 条目 http www mathworks com matlabcentral fileexchange 27485 boundedline line plots with shaded errorconfidence i
  • 使用 Polyfit 进行垂直线拟合

    这只是一个基本问题 我正在使用拟合线来分散点polyfit 在某些情况下 我的散点具有相同的 X 值并且polyfit无法在其上放置一条线 必须有某种东西可以处理这种情况 毕竟 它只是一个线配合 我可以尝试交换 X 和 Y 然后再画一条线
  • SPMD 与 Parfor

    我对 matlab 中的并行计算很陌生 我有一个创建分类器 SVM 的函数 我想用几个数据集来测试它 我有一个 2 核工作站 所以我想并行运行测试 有人可以向我解释一下以下之间的区别 dataset array dataset1 datas
  • 当 MATLAB 发生错误时如何继续循环?

    我正在使用函数将一些 dat 文件转换为 mat 文件 我在循环内调用此函数来转换多个文件 在某些情况下 我的 dat 文件已损坏 函数无法转换并发生错误 从而停止循环 现在我的问题是 是否有任何命令 当错误发生时 它应该跳过循环中的当前
  • 梯度下降Matlab实现

    我已经浏览了堆栈溢出中的许多代码 并在同一行上编写了自己的代码 这段代码有一些问题我无法理解 我正在存储值 theta1 和 theta 2 以及用于分析目的的成本函数 x 和 Y 的数据可以从此下载页 它具有 dat 文件形式的 x 和
  • Matlab,如何获取imagesc生成的结果?

    我读过一些类似的文章 但它们不是我想要的 得到imagesc之后的矩阵 https stackoverflow com questions 14364239 get the matrix after imagesc 14364434 143
  • 如何在matlab中显示图像上的点?

    我有一些像素点 比如 p1 1 1 和 p2 1 10 等等 我想以任何颜色在图像上显示这些点 这个怎么做 MATLAB plot http www mathworks com help techdoc ref plot html文档非常全
  • 如何将Matlab命令的输出重定向到文件? [复制]

    这个问题在这里已经有答案了 我想将 Matlab 命令的输出重定向或复制到文件中 我怎样才能做到这一点 就我而言 我想使用 UNIX 工具比较两个大型结构diff 示例 我可以在 Matlab 中执行此操作 gt gt s1 s1 a 32

随机推荐