基于深度学习的大规模MIMO信道状态信息反馈
MIMO系统
MIMO系统利用多个天线在发送端和接收端之间建立多条独立的信道,从而使得同一时间可以传输多个数据流,从而使得同一之间可以传输多个数据流,提高数据传输速率。

优势
增加传输速率和容量,提高信号覆盖范围和抗干扰能力,增加频谱利用率。
MIMO需要解决的问题
- 依赖于精确的信道状态信息(CSI)
- 下行链路CSI在训练期间从用户处获得并通过反馈链路返回给基站
- 系统中有许多天线,反馈信道矩阵会很大并且因此会导致过量的开销

- FDD的低互换性:(1)各个信道使用不同的频率(2)每个频率信道需要专门设计硬件来调制和解调,各个信道的设备不能互换使用
- 基站需要知道下行链路的信道状态信息,依赖于用户根据基站发送的导频信号(CSI-RS)进行信道估计,然后将估计的信道状态信息通过反馈链路发送给基站。然而反馈信道矩阵会很大导致过量的开销,需要找到一种方法来减少反馈链路的反馈数据。
系统模型
考虑一个天线的用户的基站的FDD大规模MIMO系统。在这个系统中,采用 N c N_c Nc个子载波的OFDM。因此,第n个载波的用户的下行信号为:
y n = h n ∼ H v n x n + z n y_n = h_n \sim^H v_n x_n + z_n yn=hn∼Hvnxn+zn
其中 h ~ n ∈ C N t × 1 \tilde{h}_n \in \mathbb{C}^{N_t \times 1} h~n∈CNt×1是信道频率响应向量, V n ∈ C N t × 1 V_n \in \mathbb{C}^{N_t \times 1} Vn∈CNt×1是预编码向量, x n x_n xn是发射符号, z n z_n zn是加性噪声和干扰, ( ) H ()^H ()H表示共轭转置。
假设基站配备有均匀线性阵列,响应向量为:
a ( ϕ ) = [ 1 , e − j 2 π d λ sin ϕ , … , e − j 2 π d λ ( N t − 1 ) sin ϕ ] \mathbf{a}(\phi) = \left[1, e^{-j \frac{2\pi d}{\lambda} \sin \phi}, \ldots, e^{-j \frac{2\pi d}{\lambda} (N_t - 1) \sin \phi} \right] a(ϕ)=[1,e−jλ2πdsinϕ,…,e−jλ2πd(Nt−1)sinϕ]
其中 ϕ \phi ϕ是出发角, d d d是相邻天线的距离, λ \lambda λ是载波波长,信道可以表示为:
h ~ n = N t L ∑ l = 1 L α l e − j 2 π τ l f s n N c a ( ϕ ) \tilde{h}_n = \sqrt{\frac{N_t}{L}} \sum_{l=1}^{L} \alpha_l e^{-j 2 \pi \tau_l f_s \frac{n}{N_c}} \mathbf{a}(\phi) h~n=LNtl=1∑Lαle−j2πτlfsNcna(ϕ)
其中, L L L是下行多路径的数量, a l a_l al代表传播增益, τ l \tau_l τl表示响应的延迟, f s f_s fs是抽样频率,在空间频率整个CSI矩阵可以表示为:
H ~ = [ h ~ 1 , h ~ 2 , … , h ~ N c ] H ∈ C N c × N t . \mathbf{\tilde{H}} = [\tilde{\mathbf{h}}_1, \tilde{\mathbf{h}}_2, \ldots, \tilde{\mathbf{h}}_{N_c}]^H \in \mathbb{C}^{N_c \times N_t}. H~=[h~1,h~2,…,h~Nc]H∈CNc×Nt.
通过导频训练获得CSI
下行信道一般将CSI-RS序列当做导频序列
导频训练的基本原理
- 发送导频信号:发送端发送已知的导频信号序列。这些导频信号可以是特定的符号或序列,它们在发送端和接收端都是已知的。
- 接收导频信号:接收端接收到通过信道传输后的导频信号。由于信道的影响,接收端的导频信号会包含信道的增益和相位变化。
- 信道估计:接收端利用已知的导频和接收到的导频符号,通过比较和计算,估计出信道的特性,即CSI
导频训练过程

基于深度学习的CSI反馈
传统方法
采用压缩感知技术(CS):LASSO l1-solver、TVAL3等
存在缺点:
- 严重依赖于信道是稀疏的假设
- 迭代重建方法有很大的复杂性并因此会消耗大量的计算资源


CsiNet方法
使用深度学习方法构建CsiNet。包括CSI感知(编码器)和恢复网络(解码器)两个部分
- 编码器:CsiNet通过训练数据从原始的信道矩阵中学习转换来压缩表示(码字)
- 解码器:CsiNet学习将码字转换成原始信道
- 优点:相比于传统压缩感知能以更好的恢复质量来恢复CSI,在高压缩率下保持良好性能

相关论文
论文1

- 2018 IEEE Wireless Communications Letters
- 首次将深度学习引入CSI反馈领域
- 提出CSiNet模型
论文2

- 2020,IEEE Transactions on Wireless Communications
- 对2018年模型进行了改进
- 提出CSiNet+模型
论文3

- 2021,IEEE Wireless Communications Letters
- 对2020年模型进行了改进
- 提出CSiNet+DNN模型
之后的各种基于深度学习的CSI反馈基本上是这些模型架构的变体,都是编码器和解码器,包含卷积网络,全连接网络和各种其他网络。
系统预设

CSI反馈机制

网络设计
下面三个深度学习网络为三篇论文中的CSI反馈网络
CsiNet

编码器

解码器

CsiNet+

CsiNet+DNN

训练策略

CsiNet+DNN仿真场景设置

不同方法比较
重构准确性比较

方法复杂度分析

CsiNet+DNN复现及优化
数据集介绍
相关文章:
基于深度学习的大规模MIMO信道状态信息反馈
MIMO系统 MIMO系统利用多个天线在发送端和接收端之间建立多条独立的信道,从而使得同一时间可以传输多个数据流,从而使得同一之间可以传输多个数据流,提高数据传输速率。 优势 增加传输速率和容量,提高信号覆盖范围和抗干扰能力…...
在Docker中部署Rasa NLU服务
最近因为项目需要将rasa nlu配置到docker容器中供系统调用,本篇主要整理该服务的docker配置过程。 本篇的重点在于docker的使用,不在Rasa NLU。 系统环境:Ubuntu 18.04.6 1. Rasa介绍 Rasa是一个开源的机器学习框架,专为构建基于文…...
SQL语句创建数据库(增删查改)
SQL语句 一.数据库的基础1.1 什么是数据库1.2 基本使用1.2.1 连接服务器1.2.2 使用案例 1.2 SQL分类 二.库的操作2.1 创建数据库2.2 创建数据库示例2.3 字符集和校验规则2.3.1 查看系统默认字符集以及校验规则2.3.2查看数据库支持的字符集2.3.3查看数据库支持的字符集校验规则2…...
微信小程序-Vant组件库的使用
一. 在app.json里面删除style:v2 为了避免使用Vant组件库和微信小程序组件样式的相互影响 二.在app.json里面usingComponents注册Vant组件库的自定义组件 "usingComponents": {"van-icon": "./miniprogram_npm/vant-weapp/icon/index&qu…...
为什么企业需要进行能源体系认证?
通过能源体系认证,企业可以向公众和利益相关方展示其在节能减排方面的承诺和成就。这不仅提升了企业的社会责任形象,还增强了品牌的信誉度。在当今消费者更加关注环境问题的背景下,绿色企业形象有助于赢得市场和客户的认可与信任。 能源体系认…...
【日常记录-MySQL】EVENT
Author:赵志乾 Date:2024-08-07 Declaration:All Right Reserved!!! 1. 简介 在MySQL中,EVENT是一种数据库对象,其用于设定数据库任务自动执行。这些任务可以是任意有效的SQL语句&a…...
嵌入式学习day12(LinuxC高级)
由于C高级部分比较零碎,各部分之间没有联系,所以学起来比较累,多练习就好了 一丶Linux起源 寻科普|第二期:聊聊Linux的前世今生 UNIX和linux的区别: (1)linux是开发源代码的自由软件.而unix是…...
pytorch中的hook机制register_forward_hook
上篇文章主要介绍了hook钩子函数的大致使用流程,本篇文章主要介绍pytorch中的hook机制register_forward_hook,手动在forward之前注册hook,hook在forward执行以后被自动执行。 1、hook背景 Hook被成为钩子机制,pytorch中包含forwa…...
使用Gin框架返回JSON、XML和HTML数据
简介 Gin是一个高性能的Go语言Web框架,它不仅提供了简洁的API,还支持快速的路由和中间件处理。在Web开发中,返回JSON、XML和HTML数据是非常常见的需求。本文将介绍如何使用Gin框架来返回这三种类型的数据。 环境准备 在开始之前࿰…...
网工内推 | 国企运维工程师,华为认证优先,最高年薪20w
01 上海陆家嘴物业管理有限公司 🔷招聘岗位:IT运维工程师 🔷岗位职责: 1、负责对公司软、硬件系统、周边设备、桌面系统、服务器、网络基础环境运行维护、故障排除。 2、负责对各部门软件操作、网络安全进行检查、指导。 3、负责…...
c# 使用异步函数实现线程的功能
c#程序执行时 想要拖动窗口 需要使用线程,但是使用线程 对操作前端窗体很不友好. 所以写了一个异步函数,网上搜了一下,貌似异步函数比线程 更加友好,更加现代 做这个功能的原因是 主要是想等程序执行完 走一个提示.用线程很难做到 using System; using System.Threading; usi…...
MySQL之MySQL server has gone away复现测试
测试MySQL server has gone away复现条件 环境情形一报错信息复现测试 情形二报错信息复现测试 环境 Python: 3.8/3.9 MySQL: 5.x 情形一 报错信息 File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 319, in _querydb.query(q)File "/…...
编程深水区之并发④:Web多线程
Node的灵感来源于Chrome,更是移植了V8引擎。在Node中能够实现的多线程,在Web环境中自然也可以。 一、浏览器是多进程和多线程的复杂应用 在本系列的第二章节,有提到现代浏览器是一个多进程和多线程的复杂应用。浏览器主进程统管全局…...
【实战指南】从提升AI知识库效果,从PDF转Markdown开始
经常有人抱怨AI知识库精确度不够、答非所问。我有时候想想,会觉得其实AI也挺冤的,因为很有可能不是它能力不行,而是你一开始给的文档就有问题,导致它提取文本有错误、不完整,那后边一连串的检索、生成怎么可能好呢&…...
Android 删除telephony的features
比如删除android.hardware.telephony.subscription 找到这个文件:frameworks/native/data/etc/android.hardware.telephony.subscription.xml <!-- This is the standard set of features for devices to support Telephony Subscription API. --> -<perm…...
Linux驱动开发—编写第一个最简单的驱动模块
文章目录 开发驱动准备工作1.正常运行的Linux系统的开发板2.内核源码树3.nfs挂载的rootfs4.得心趁手的IDE 第一个Hello world 驱动程序常见模块的操作命令模块的初始化和清理模块的版本信息模块中的各种宏 示例Hello World代码printk函数解析 使用MakeFile编译驱动模块使用insm…...
科普文:微服务之Spring Cloud 组件API网关Gateway
API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响…...
Kubernetes中的CRI、CNI与CSI:深入理解云原生存储、网络与容器运行时
引言 随着云原生技术的飞速发展,Kubernetes(简称K8s)作为云原生应用的核心调度平台,其重要性日益凸显。K8s通过开放一系列接口,实现了高度的可扩展性和灵活性,其中CRI(Container Runtime Inter…...
【数据结构】二叉搜索树(Java + 链表实现)
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构、LeetCode专栏 📚本系…...
java Brotli压缩算法实现压缩、解压缩
在Java中实现Brotli压缩和解压缩,你可以使用org.brotlienc和org.brotlidec包中的类。以下是压缩和解压缩的基本步骤和示例代码: 压缩文件 创建FileInputStream以读取原始文件。创建BrotliOutputStream以写入压缩数据。读取原始文件并写入压缩流。关闭流…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
