基于simulink采用 QSHB 和 HBPS 算法的混合 MIMO 波束成形仿真

news2024/11/24 12:31:22

一、前言

本例展示了多输入多输出 (MIMO) 无线通信系统的 Simulink 模型。无线系统使用混合波束成形技术来提高系统吞吐量。

二、介绍

5G和其他现代无线通信系统广泛使用MIMO波束成形技术进行信噪比(SNR)增强和空间复用,以提高散射体丰富环境中的数据吞吐量。在散射体丰富的环境中,发射天线和接收天线之间可能不存在视线 (LOS) 路径。为了获得高吞吐量,MIMO 波束成形在发射器侧实现预编码,并在接收器侧进行组合,以提高 SNR 和独立的空间通道。全数字波束成形结构要求每个天线都有一个专用的射频到基带链,这使得整体硬件成本高昂且功耗高。作为解决方案,提出了混合MIMO波束成形[1],其中使用较少的RF到基带链,并在RF部分实现了部分预编码和组合。通过精心选择预编码和组合的权重,混合波束成形可以实现与全波束成形相当的性能。

在本例中,我们介绍了具有混合MIMO波束成形的Simulink模型。该模型显示了两种混合波束成形算法:量化稀疏混合波束成形 (QSHB) [2] 和带峰值搜索的混合波束成形 (HBPS)。

下图显示了混合波束成形系统的结构。

在图中,

是信号流的数量;

是发射天线的数量;

是发射射频链的数量;

是接收天线的数量;和

是接收射频链的数量。在本例中,两个信号流、64 个发射天线、4 个发射射频链、16 个接收天线和 4 个接收射频链。

散射通道表示为

.混合波束成形权重由模拟预编码器表示

、数字预编码器

、模拟合路器

和数字合路器

.有关混合波束成形。

三、模型

Simulink 模型由四个主要组件组成:MIMO 发射器、MIMO 通道、MIMO 接收器和权重计算。

MIMO 发射 器 生成 信号 流, 然后 应用 预 码。调制信号通过MIMO信道中定义的散射信道传播,然后在接收器侧进行解码和解调。

四、MIMO 散射通道

MIMO 散射信道由信道矩阵表示。此外, 本 例 还 使用 启用 的 子 系统 定期 更改 该 矩阵, 以 模拟 MIMO 信道 可能 随 时间 变化 的 事实

五、混合波束成形权重计算

在混合波束成形系统中,预编码和相应的组合过程部分在基带完成,部分在RF频段完成。通常,在RF频段实现的波束成形仅涉及相移。因此,这种系统中的一个关键部分是如何根据信道确定基带和RF频段之间的权重分配。这是在权重计算模块中完成的,其中预编码权重、、 、 和组合权重和 是基于通道矩阵 计算的。在此示例中,我们假设信道矩阵是已知的,并提供QSHB和HBPS算法。

5.1 量化稀疏混合波束成形 (QSHB)

文献[2,3]表明,给定MIMO散射信道的信道矩阵H,可以通过迭代算法[2]计算混合波束成形权重。使用正交匹配追踪算法,得到的模拟预编码/组合权重只是对应于信道矩阵主导模式的转向矢量。有关算法的详细说明,请参阅混合波束成形简介示例。

5.2 带峰值搜索的量化稀疏混合波束成形 (HBPS)

HBPS是QSHB的简化版本。HBPS不是迭代地搜索信道矩阵的主要模式,而是将所有数字权重投影到方向网格中,并识别

峰值以形成相应的模拟波束成形权重。这尤其适用于大型阵列,例如大规模MIMO系统中使用的阵列,因为对于大型阵列,方向更有可能是正交的。

由于通道矩阵会随时间变化,因此还需要定期执行权重计算以适应通道变化。

六、结果和显示

下图显示了使用 QSHB 算法在接收器上恢复的 16 个 QAM 符号流。由此产生的星座显示,与源星座相比,恢复的符号正确位于两个流中。这意味着使用混合波束成形技术,我们可以通过同时发送两个流来提高系统容量。此外,星座图显示,由于点在第一个恢复流的星座中的分散度较小,因此第一个恢复流的方差优于第二个恢复流。这是因为第一个流使用MIMO信道的最主要模式,因此它具有最佳的SNR。

  • HBPS

HBPS的结果如下图所示。星座图显示,与QSHB相比,它实现了相似的性能。这意味着HBPS是模拟64x16 MIMO系统的不错选择。

七、总结

本示例提供了两种混合波束成形方法(QSHB 和 HBPS)的 Simulink 模型。MIMO 散射信道用于为大规模 MIMO 系统提供真实的信道模型。Simulink 模型根据信号流中的功能进行分区,为硬件实施提供指导。对于给定的 H,符号的数量可以变化以模拟可变相干通道长度。通过该 Simulink 模型,可以研究各种系统参数和新的混合波束成形算法。系统结构便于硬件实施。

八、参考

[1] Andreas F. Molisch, et al. "Hybrid Beamforming for Massive MIMO: A Survey", IEEE Communications Magazine, Vol. 55, No. 9, September 2017, pp. 134-141

[2] Oma El Ayach, et al. "Spatially Sparse Precoding in Millimeter wave MIMO Systems, IEEE Transactions on Wireless Communications", Vol. 13, No. 3, March 2014

[3]. Emil Bjornson, Jakob Hoydis, Luca Sanguinetti, "Massive MIMO Networks: Spectral, Energy, and Hardware Efficiency", Foundations and Trends in Signal Processing: Vol. 11, No. 3-4, 2017

九、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

打开下面的“Example.m”文件,点击运行,就可以看到上述效果。

程序下载:https://download.csdn.net/download/weixin_45770896/87666493

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…

阿里云u1服务器通用算力型CPU处理器性能测评

阿里云服务器u1通用算力型Universal实例高性价比,CPU采用Intel(R) Xeon(R) Platinum,主频是2.5 GHz,云服务器U1实例的基准vCPU算力与5代企业级实例持平,最高vCPU算力与6代企业级实例持平,提供2c-32c规格和1:1/2/4/8丰富…

16.基于主从博弈理论的共享储能与综合能源微网优化运行研究

说明书 MATLAB代码:基于主从博弈理论的共享储能与综合能源微网优化运行研究 关键词:主从博弈 共享储能 综合能源微网 优化调度 参考文档:《基于主从博弈理论的共享储能与综合能源微网优化运行研究》完全复现 仿真平台:MATLAB …

前端面试题汇总-代码输出篇

1. 异步 & 事件循环 1. 代码输出结果 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); 输出结果如下: 1 2 4 promise.then 是微任务,它…

力扣刷题实录(大厂用题)—— 前言

写在前面 力扣刷题笔记与力扣官方的解答有什么区别吗?为什么不直接去看官方的解答呢 ?并且官方的解答部分还有视频讲解。 这个问题困扰了我很长时间,我不断地怀疑自己做笔记是否有意义。 后来有一个小伙伴问我问题的时候我悟了&#xff0c…

【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

目录 一、EPIT 定时器简介二、定时器按键消抖 一、EPIT 定时器简介 EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的…

windows卸载wsl下的ubuntu

查看: wsl --list删除: wsl --unregister Ubuntu-18.04 注意名字别输入错误了,版本号是你wsl安装的对应的ubuntu版本号。 查看: wsl --list

提速科研,AI 正引领一场新革命

By 超神经 内容一览:五一国际劳动节假期,HyperAI超神经为大家汇总了往期 ScienceAI 相关报道,对该领域感兴趣的读者可以来一探究竟了! 关键词:ScienceAI 盘点 整理 | 缓缓 作为近两年的技术热点,Scien…

Sybase使用sp_helptext查看系统存储过程的源码

sp_helptext存储过程用于显示已编译对象的源代码。 sp_helptext是Sybase ASE内置的存储过程,可从任何位置调用。 但实际上,如果直接使用,常常会得到(令人头大的)错误提示: Msg 17461 Object does not exi…

JavaWeb学习------Servlet

目录 JavaWeb学习------Servlet Servlet 生命周期 Servlet 生命周期 Servlet 方法介绍 •Servlet 体系结构 Servlet 体系结构 •Servlet urlPattern配置 Servlet urlPattern配置 •XML 配置方式编写 Servlet XML 配置方式编写 Servlet JavaWeb学习------Servlet •快速…

centos安装 磁盘分区选择

1 介绍 INSTALLATION SUMMARY 在硬盘进行分区后,我们一般都会进行格式化,因为每种操作系统对文件属性/权限/存储数据格式的设定都有所不同,故而为了使得其跟操作系统一致,则需要格式化。 哈喽,大家好,我是…

Java AQS学习

目录 1、AQS初步 2、AQS源码 2.1、ReentrantLock类解析 2.2、AQS源码 JUC-->AQS-->AbstractQueuedSynchronizer:字面意思:抽象的队列同步器 AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO…

InnoDB 引擎 底层逻辑

目录 0 课程视频 1 逻辑存储结构 1.1 结构图 1.2 表空间 -> 记录 索引 存储记录 等数据 1.2.1 储存在 cd/var/lib/mysql -> ll -> 目录 mysql.ibd 1.3 段 -> 索引 存储记录 具体存储 1.3.1 数据段 b树 叶子节点 1.3.2 索引段 b树的 非叶子节点 1.3.3 回滚段…

Java 基础入门篇(一)——— Java 概述

文章目录 一、Java 概述二、Java 的产品 JDK2.1 JDK 安装2.2 Java与 Javac 介绍2.3 Java 程序的开发步骤 三、Java 程序的执行原理四、JDK 的组成五、Java 的跨平台工作原理 一、Java 概述 Java 是 sun 公司在 1995 年推出的一门计算机高级编程语言,其语言风格接近人…

javaEE+mysql学生竞赛管理系统

本系统是基于JAVA平台开发的一套学生竞赛信息管理的系统。系统采用JSP为编程语言。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 本课题的目的是使…

none模式配置网络操作

基于Docker引擎启动Nginx WEB容器,默认以None方式启动Docker容器,此处使用pipework工具手工给容器指定桥接网卡,并且手工配置IP地址,操作指令如下: #查看镜像列表; docker images#运行新的容器 docker ru…

【Python】【进阶篇】17、如何配置settings.py文件

目录 17、如何配置settings.py文件1) 修改语言与时区配置2) 设置时区不敏感3) 配置项目所需数据库4)学会阅读报错信息 17、如何配置settings.py文件 《settings.py配置文件详解》一文中,将 settings.py 配置文件的每一项给大家做了介绍。在开发的过程中…

MYSQL进阶02

MYSQL进阶02 数据类型char与varchartext与blob浮点数与定点数日期类型的选择 数据类型 char与varchar char和varchar类型类似,都用来存储字符串,但是他们保存和检索的方式不同。char属于固定长度的字符类型,而varchar属于可变长度的字符类型…

JavaWeb学习--RequestResponse

目录 JavaWeb学习--Request&Response 1,Request和Response的概述 request:获取请求数据 response:设置响应数据 **小结** 2,Request对象 **小结** 2.2 Request获取请求数据 **小结** 2.4 请求参数中文乱码问题 URL编码 2.5 Request请求转…

c提高学习——选择排序算法

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h>//选择排序 void mySort(int arr[], int len) {for (int i 0; i < len; i){//认定i是最小值的下标int min i;for (int j i1; j < len; j){if (arr[min…