MIMO(多天线)通信的四种译码算法

server/2024/9/20 15:41:37/

目录

一. 介绍

二. 极大似然译码

三. 破零译码算法

四. 最小均方误差算法

五. 球形译码


一. 介绍

发射天线数记为Mt,接收天线数记为Mr。由此发射信号x为向量:

接受信号y为向量:

信道H为矩阵:

利用n代表噪声向量,由此可得MIMO通信系统模型为:

y=Hx+n

噪声服从复高斯分布,通常假定均值为0,方差为1,如下:

发射信号的总功率限定为\rho,由此需要发射信号x的均值满足如下关系:

接收端在收到y后,就尝试译码出x,但译码不一定完全正确,所以记为(estimate):

接收端在译码之前通常已知:信号矩阵(channel matrix)H,集合X,y

二. 极大似然译码

Maximum likelihood:ML,极大似然译码

在接下来的讨论中,我们不妨假设发射信号x为均匀分布。

如果想要译码错误率最小,那么最优的则是极大似然译码。假定噪声在不同的维度上独立同分布(IID),那么接收端采用极大似然译码时,其本质就是解决如下目标函数(objective function):

理解:遍历所有可能得发射向量x,很明显需要尝试|\mathcal{X}|^{M_t}次。所以极大似然译码算法的复杂度与发射天线Mt成指数关系。

三. 破零译码算法

zero forcing:ZF,迫零算法

迫零算法属于线性译码。线性译码的复杂度与对矩阵进行求逆(inverting),分解(factorizing)是差不多的。简单来讲就是从空间的角度消除信道的影响,也就是所谓的MIMO均衡过程。来看下对应的英文表达:

Spatially decoupling the effects of the channel by a process known as MIMO equalization
也就是对接收向量y乘以MIMO均衡矩阵A,如下:

由此可得:

此步的结果不一定在原始的集合中,所以需要进一步运算得到\hat x(y)。通常就是利用逐维度进行译码,该步译码方程可记作:

理解:从不同的维度上,映射到离其最近的星座点(constellation point)上。

接下来,我们将详细讲解迫零算法。

需要注意的是,线性译码的精髓是如何已知y,求解\tilde x(y)

将迫零算法需要面临的方程问题如下:

与极大似然译码相比,看起来方程很类似。细心的话会发现去掉了对x范围的限制,由此便降低了算法的复杂度。

如何H为可逆的方阵(square invertible)。这个问题可直接求解为:

对于可逆的方阵,也就是:

H^\dagger=H^{-1}

在其他情况则可以考虑矩阵的伪逆。通常在通信系统中,要求接收天线要不少于发射天线,也就是:

这样就可以保证信道矩阵H中有Mt列线性独立的列,由此伪逆(Moore-Penrose pseudoinverse)可计算为:

对信道矩阵H求逆的算法复杂度为立方。当然从\tilde x(y)得到\hat x(y),根据前面的方程,很明显与天线之间呈现线性关系。

四. 最小均方误差算法

linear minimum mean squared error (L-MMSE):线性最小均方误差算法

如果信道矩阵H的奇异值(singular value)太大,迫零算法会导致噪声扩大(noise amplification)。根据线性代数的基础,此性质可用矩阵H的条件数(condition number)来衡量,定义为最大奇异值与最小奇异值的比值。

如果条件数趋近于1,那么迫零算法误差相对不大,矩阵well conditioned。

如果条件数过大,那么迫零算法误差将也会变大,矩阵ill conditioned。

对迫零算法的目标函数,添加一个调节项,也就是:

该目标函数的求解也不难,可得:

对于L-MMSE,上式子中的\lambda定义为天线数除以总功率,也就是:

该方程求解的本质为:

理解:上式子中s与y之间呈现线性关系,也就是所谓的仿射关系(affine)。

E代表与x和n相关的均值。需要注意的是,对于接收方来讲,信道矩阵H是固定且已知的。

实际上如果忽略x来自于离散的星座点,也将其看成连续的高斯分布的话,那么这就是MMSE译码器(MMSE detector)。

与极大似然译码(ML)相比,线性译码器的优点是操作简单,缺点是BER(比特误码率)较高。

五. 球形译码

sphere decoder:SD,球形译码

球形译码有一个很重要的半径参数r,由此来根据需要平衡性能与复杂度,很像格密码

如果选择足够大的r,那么球形译码的性能会接近极大似然译码(ML)。

如果r较小,需要搜寻的空间会变小,由此复杂度降低(与ML相比),当然代价就是正确率会下降。

球形译码器需要首先对信道矩阵H进行分解,如下:

H=QR

其中Q为酉矩阵(unitary),R为上三角矩阵(upper triangular)。回忆起来,酉矩阵Q与其转置Q^H不会改变向量的l2范数(squared distance norm),由此可得:

以上式子的运算就利用到了:

最后一个等号:R为上三角矩阵。

当半径r取无穷大时,方程便会得到ML算法的解。

当半径r取值不大时,借助深度优先搜寻(depth first search)或者宽度优先搜寻(breadth first search),利用上三角矩阵R的性质,可以去掉很多离得远的x,由此便可以降低算法复杂度。

实践证明球形译码的输出结果一般与ML输出结果类似。


http://www.ppmy.cn/server/2789.html

相关文章

【Web】2022DASCTF Apr X FATE 防疫挑战赛 题解(全)

目录 warmup-php soeasy_php warmup-java warmup-php spl_autoload_register函数实现了当程序遇到调用没有定义过的函数时,会去找./class/函数名.php路径下的php文件,并把它包含在程序中。 拿到附件拖进Seay里自动审计一下 显然利用终点为evaluateExp…

探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率

探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率 文章目录 探索 IntelliJ IDEA 2024.1最新变化:全面升级助力编码效率摘要引言 IntelliJ IDEA 2024.1 最新变化关键亮点全行代码补全 Ultimate对 Java 22 功能的支持新终端 Beta编辑器中的粘性行 …

用html写文本变形动画

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本变形动画</title><link rel"stylesheet" href"./style.css"> </head> <body> <!-- 两个文本部分…

oracle 19c数据库W00n进程使用很多PGA内存资源的分析

今天&#xff0c;客户反馈测试环境的数据库PGA资源不足&#xff0c;报错ORA-04036: 实例使用的 PGA 内存超出 PGA_AGGREGATE_LIMIT&#xff1b;分析是多个W00n进程使用大量PGA-触发了BUG&#xff0c;对应解决办法就是打补丁。&#xff08;民间办法就是KILL进程、重启数据库&…

微服务架构中的业务解耦设计

目录 业务解耦的原则 单一责任原则 松耦合原则 业务解耦的实现方法 业务解耦的优势 微服务架构中的业务解耦设计案例 背景 业务解耦设计 服务拆分 商品服务 订单服务 用户服务 支付服务 物流服务 通信机制 数据一致性 具体实现 商品服务 订单服务 用户服务…

锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测 Matlab基于GRU的锂电池剩余寿命预测 基于GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2020及以上 锂电池的剩余寿命预测是…

SVN修改已提交版本的注释

目录 一、需求分析 二、问题分析 三、解决办法 一、需求分析 ​开发过程中&#xff0c;在SVN提交文件后&#xff0c;发现注释写的不完整或不够明确&#xff0c;想再修改之前的注释文字​。 使用环境&#xff1a; SVN服务器操作系统&#xff1a;Ubuntu 20.04.6 LTS SVN版本&…

MongoDB的go SDK使用集锦

在上一章解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用介绍了如何使用mongo shell操作mongo数据库&#xff0c;接下来介绍如何使用sdk来操作数据库&#xff0c;这里以go语言为例&#xff0c;其他语言请查看源文档mongo docs Quick Start 内置数据结构 MongoDB是存…