基于卡尔曼的混合预编码技术用于多用户毫米波大规模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 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • Matlab:掩码/创建一个知道其原点且具有一定半径的圆形 roi

    只是一个简单的问题 我有一张图像 并且提取了某个点 特征 我知道每个帧中该点的坐标 说 x1 和 y1 我需要一个圆形 ROI 形式 该点在图像上具有我选择的半径 我尝试了 impoly 和 roipoly 当我知道图像中的要点时 不知道如
  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma

随机推荐