最大似然估计法和Zero Forcing算法的思考

news2025/2/25 8:26:33

文章目录

    • 一、Zero Forcing 算法思想
    • 二、MMSE
    • 三、MIMO检测中 Zero Forcing 算法比 Maximum Likelihood 差的思考

本篇文章是学习了B站UP主 乐吧的数学 之后的笔记总结,老师讲的非常好,大家有兴趣的可以关注一波!

一、Zero Forcing 算法思想

那么 Maximum Likelihood(ML) 算法是最优的检测,这个最优指的是使错误率最低(假定发送的 x 是等概率出现的),从最低错误率的角度出发,同时假定在每个天线处的高斯白噪声是独立同分布的,那么,这个 ML 算法的公式为:
X ^ = argmin ⁡ X ∈ X M t ∥ Y − H X ∥ 2 (1) \hat{X}=\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\|Y-H X\|^{2}\tag1 X^=argminXXMtYHX2(1)

遍历 X X X 的所有可能取值,找到是公式 (1) 最小的。

因为公式 (1) 的计算量非常大,在实际中是不可行的。那么对公式 (1) 放开条件,让 X 的取值,不仅限于星座图中的值,而是任何值,那么,这个就是 zero forcing(ZF) 算法的出发点,则公式 (1) 就变成
X ^ = argmin ⁡ X ∥ Y − H X ∥ 2 (2) \hat{X}=\operatorname{argmin}_{X}\|Y-H X\|^{2}\tag2 X^=argminXYHX2(2)

注意 argmin 的下表中的 X ,没有做任何限制。公式 (2) 就是一个无约束的最优化问题,我们令:
f ( X ) = ∥ Y − H X ∥ 2 (3) f(X)=\|Y-H X\|^{2}\tag3 f(X)=YHX2(3)

接下来对公式 (3) 做进一步的推导(我们约定所有的向量都是列向量):

f ( X ) = ∥ Y − H X ∥ 2 = ( Y − H X ) H ( Y − H X ) = ( Y H − X H H H ) ( Y − H X ) = Y H Y − Y H H X − X H H H Y + X H H H H X (4) \begin{aligned} f(X) & =\|Y-H X\|^{2} \\ & =(Y-H X)^{H}(Y-H X) \\ & =\left(Y^{H}-X^{H} H^{H}\right)(Y-H X) \\ & =Y^{H} Y-Y^{H} H X-X^{H} H^{H} Y+X^{H} H^{H} H X \end{aligned}\tag4 f(X)=YHX2=(YHX)H(YHX)=(YHXHHH)(YHX)=YHYYHHXXHHHY+XHHHHX(4)

把公式 (4) 对 X X X 求导,公式 (4) 实际上是一个数, X X X 是一个向量,这个求导的过程,实际上就是对 (4) 用 X X X 的每个分量分别求一次导数并令其等于 0,得到 N N N ( 假如 X X X N N N 维的列向量) 个方程,联合起来可以求解出 X 的每个分量。用矩阵形式来写就是

∂ Y H H X ∂ X = H H Y \frac{\partial Y^{H} H X}{\partial X}=H^{H} Y XYHHX=HHY

∂ X H H H Y ∂ X = H H Y \frac{\partial X^{H} H^{H} Y}{\partial X}=H^{H} Y XXHHHY=HHY

∂ X H H H H X ∂ X = 2 H H H X \frac{\partial X^{H} H^{H} H X}{\partial X}=2 H^{H} H X XXHHHHX=2HHHX


0 − H H Y − H H Y + 2 H H H X = 0 0-H^{H} Y-H^{H} Y+2 H^{H} H X=0 0HHYHHY+2HHHX=0

进一步推导

H H H X = H H Y H^{H} H X=H^{H} Y HHHX=HHY

最后:
X ~ = ( H H H ) − 1 H H Y (5) \tilde{X}=\left(H^{H} H\right)^{-1} H^{H} Y\tag5 X~=(HHH)1HHY(5)

如果 H H H 是方阵且可逆,公式 (5) 可以写成:

X ~ = H − 1 ( H H ) − 1 H H Y = H − 1 Y \begin{aligned} \tilde{X} & =H^{-1}\left(H^{H}\right)^{-1} H^{H} Y \\ & =H^{-1} Y \end{aligned} X~=H1(HH)1HHY=H1Y

这样得出的值,就是检测后的估计值,即用 Zero Forcing 算法估计出来的值。下面我们这个值用 X ~ \tilde{X} X~ 来表示。

Y = H X + W Y=H X+W Y=HX+W 代入

X ~ = ( H H H ) − 1 H H ( H X + W ) = X + ( H H H ) − 1 H H W = X + H − 1 W = X + W ~ \begin{aligned}\tilde{X}&=\left(H^{H} H\right)^{-1} H^{H}(H X+W)\\ &=X+\left(H^{H} H\right)^{-1} H^{H} W\\ &=X+H^{-1}W\\ &=X+\tilde{W} \end{aligned} X~=(HHH)1HH(HX+W)=X+(HHH)1HHW=X+H1W=X+W~

然后,再做解调检测

X ^ = argmin ⁡ X ∈ X M t ∥ X ~ − X ∥ 2 (7) \begin{aligned} \hat{X}=\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\|\tilde{X}-X\|^{2} \end{aligned}\tag7 X^=argminXXMtX~X2(7)

X ∈ X M t X \in \mathcal{X}^{M_{t}} XXMt 是因为输出信号是从 M t M_t Mt 个天线中传输出来的信号。

我们将最大似然估计的算法拿下来比较一下

X ^ = argmin ⁡ X ∈ X M t ∥ Y − H X ∥ 2 \hat{X}=\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\|Y-H X\|^{2} X^=argminXXMtYHX2

会发现其实这是两种思想方法,一个是在发送信号端进行比较,一个是在接收端进行比较。同时误差的来源都是接收端附加的噪声 W W W但是Zero Forcing的优越处在于 X ~ \tilde{X} X~ 的值只要计算一次,就可以与 X ∈ X M t X \in \mathcal{X}^{M_{t}} XXMt 中的值进行比较,计算量会减小。

二、MMSE

G = ( H H H + σ 2 I ) − 1 H H G=\left(H^{H} H+\sigma^{2} I\right)^{-1} H^{H} G=(HHH+σ2I)1HH

即:

X ~ = G Y = G H X + G W = ( H H H + σ 2 I ) − 1 H H H X + ( H H H + σ 2 I ) − 1 H H W \tilde{X}=G Y=G H X+G W=\left(H^{H} H+\sigma^{2} I\right)^{-1} H^{H} H X+\left(H^{H} H+\sigma^{2} I\right)^{-1} H^{H} W X~=GY=GHX+GW=(HHH+σ2I)1HHHX+(HHH+σ2I)1HHW

噪声小的时候,应该类似于 Zero Forcing,当噪声比较大时,接近 Matched Filter

这里有一个有趣的现象,当噪声比较小的时候,MMSE 还是比 ZF 要好。有人专门对这个现象进行了理论分析,感兴趣的可以去阅读文献:

Y. Jiang, M. K. Varanasi and J. Li, “Performance Analysis of ZF and MMSE Equalizers for MIMO Systems: An In-Depth Study of the High SNR Regime,” in IEEE Transactions on Information Theory, vol. 57, no. 4, pp. 2008-2026, April 2011, doi: 10.1109/TIT.2011.2112070.

三、MIMO检测中 Zero Forcing 算法比 Maximum Likelihood 差的思考

我们假设这里 H H H 是方阵并且是可逆的

X ~ = H − 1 Y \tilde{X}=H^{-1} Y X~=H1Y

Zero Forcing 算法于是有:

X ^ = argmin ⁡ X ∈ X M t ∥ X ~ − X ∥ 2 = argmin ⁡ X ∈ X M t ∥ H − 1 Y − X ∥ 2 = argmin ⁡ X ∈ X M t ∥ H − 1 ( Y − H X ) ∥ 2 \begin{aligned} \hat{X} & =\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\|\tilde{X}-X\|^{2} \\ & =\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\left\|H^{-1} Y-X\right\|^{2} \\ & =\operatorname{argmin}_{X \in \mathcal{X}^{M_{t}}}\left\|H^{-1}(Y-H X)\right\|^{2} \end{aligned} X^=argminXXMtX~X2=argminXXMt H1YX 2=argminXXMt H1(YHX) 2

这里假定 H H H 是方阵且可逆的,则 H H H 的逆矩阵也可以做 S V D SVD SVD 分解:
H − 1 = U Σ V H H^{-1}=U \Sigma V^{H} H1=UΣVH

则公式变为

∥ H − 1 ( Y − H X ) ∥ 2 = ∥ U Σ V H ( Y − H X ) ∥ 2 \left\|H^{-1}(Y-H X)\right\|^{2}=\left\|U \Sigma V^{H}(Y-H X)\right\|^{2} H1(YHX) 2= UΣVH(YHX) 2

我们把 看成一个向量,则矩阵 U U U 因为是单位正交矩阵,所以,是一个刚性旋转,不改变被作用的向量的长度,因此 公式可以继续推导为:

∥ H − 1 ( Y − H X ) ∥ 2 = ∥ Σ V H ( Y − H X ) ∥ 2 \left\|H^{-1}(Y-H X)\right\|^{2}=\left\|\Sigma V^{H}(Y-H X)\right\|^{2} H1(YHX) 2= ΣVH(YHX) 2

公式 (8) 中,我们把 Y − H X Y- HX YHX 看成一个向量,记为 Z Z Z,则 V H V^H VH 是对这个向量 Z Z Z 做旋转,不改变向量长度,旋转后的向量记为 Z ^ \hat{Z} Z^, 则矩阵 Σ \Sigma Σ,是对向量各个分量进行缩放:
Σ = [ λ 1 ⋯ λ N ] \Sigma=\left[\begin{array}{lll} \lambda_{1} & & \\ & \cdots & \\ & & \lambda_{N} \end{array}\right] Σ= λ1λN

情况一: 所有特征值都相等

λ 1 = ⋯ = λ N = λ \lambda_{1}=\cdots=\lambda_{N}=\lambda λ1==λN=λ 时,公式可以写成:

∥ H − 1 ( Y − H X ) ∥ 2 = ∥ Σ V H ( Y − H X ) ∥ 2 = ∥ λ I V H ( Y − H X ) ∥ 2 = λ 2 ∥ V H ( Y − H X ) ∥ 2 \left\|H^{-1}(Y-H X)\right\|^{2}=\left\|\Sigma V^{H}(Y-H X)\right\|^{2}=\left\|\lambda I V^{H}(Y-H X)\right\|^{2}=\lambda^{2}\left\|V^{H}(Y-H X)\right\|^{2} H1(YHX) 2= ΣVH(YHX) 2= λIVH(YHX) 2=λ2 VH(YHX) 2

因为 V H V^H VH 是单位正交的矩阵,因此,是一个刚性旋转,不改变后面向量的长度,因此公式可以写成:

∥ H − 1 ( Y − H X ) ∥ 2 = λ 2 ∥ ( Y − H X ) ∥ 2 \left\|H^{-1}(Y-H X)\right\|^{2}=\lambda^{2}\|(Y-H X)\|^{2} H1(YHX) 2=λ2(YHX)2

这种情况下, Zero Forcing 算法就与 Maximum Likelihood 算法的性能一致。

情况二:噪声非常小,趋近于 0

公式中,一定能找到一个 X X X 向量,使得 Y − H X Y - HX YHX 0 0 0 向量,因为是 0 0 0 向量,所以,这个就是最小值,不可能找到另外一个向量 X ′ X' X ,使得结果比 0 小。所以,在噪声为 0 0 0 的情况下,Zero Forcing 算法就与 Maximum Likelihood 算法的性能一致。

情况三:特征值不全都相等,也含有噪声
∥ H − 1 ( Y − H X ) ∥ 2 = ∥ Σ V H ( Y − H X ) ∥ 2 = ∥ [ λ 1 Z ^ 1 ⋯ λ N Z ^ N ] ∥ 2 = λ 1 2 ∥ Z ^ 1 ∥ 2 + ⋯ + λ 1 N ∥ Z ^ N ∥ 2 \begin{aligned} \left\|H^{-1}(Y-H X)\right\|^{2} & =\left\|\Sigma V^{H}(Y-H X)\right\|^{2} \\ & =\left\|\left[\begin{array}{c} \lambda_{1} \hat{Z}_{1} \\ \cdots \\ \lambda_{N} \hat{Z}_{N} \end{array}\right]\right\|^{2} \\ & =\lambda_{1}^{2}\left\|\hat{Z}_{1}\right\|^{2}+\cdots+\lambda_{1}^{N}\left\|\hat{Z}_{N}\right\|^{2} \end{aligned} H1(YHX) 2= ΣVH(YHX) 2= λ1Z^1λNZ^N 2=λ12 Z^1 2++λ1N Z^N 2

公式上面公式中第一个等号那里,相当于对向量 Y − H X Y-HX YHX 先做旋转,然后再在各个维度上做缩放,例如都是都是逆时针旋转一个固定角度,两个维度分别是放大三倍和缩小一倍(以二维向量为例子,方便画图理解),则不同的向量,即使长度相同,但是角度不同,经过旋转和缩放后,长度将会不同。

下图蓝色是初始向量,旋转后变成绿色向量,然后经过 X 轴放大3倍, Y 轴缩小 1/3 ,变成右边紫色向量。

在这里插入图片描述

从上面两个实例可以看出,旋转缩放前,第一个图的原始向量要比第二个图的原始向量要短,但是做了同样的旋转缩放后,第一个图的结果向量反而比第二个图的结果向量要长,可见,旋转缩放后,会改变向量长度的大小关系,进而影响 Zero Forcing 算法达不到 Maximum Likelihood 算法的效果,即可能找到的不是最优解。

另一个直观的解释就是,接收端的噪声往往是各向同性的高斯噪声,经过 H − 1 W H^{-1}W H1W 之后的噪声会变成各向异性的噪声,从而降低了系统性能。

在这里插入图片描述

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

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

相关文章

Linux应用编程(文件IO基础)

1.1、个简单的文件 IO 示例 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(void) {char buff[1024];int fd1, fd2;int ret;/* 打开源文件 src_file(只读方式) */fd1 open("./src_file",…

差分矩阵算法

前言&#xff1a;我们熟悉一维数组的前缀和和差分数组的相关操作和原理&#xff0c;但是对于二维数组也就是矩阵来说&#xff0c;它的差分和前缀和又会有什么不同之处呢&#xff1f;下面我们一起来研究&#xff0c; 1.二维数组的前缀和 首先&#xff0c;我们一般规定二维数组的…

【RocketMQ】主从同步实现原理

主从同步的实现逻辑主要在HAService中&#xff0c;在DefaultMessageStore的构造函数中&#xff0c;对HAService进行了实例化&#xff0c;并在start方法中&#xff0c;启动了HAService&#xff1a; public class DefaultMessageStore implements MessageStore {public DefaultM…

Vue2-黑马(六)

目录&#xff1a; &#xff08;1&#xff09;element-ui search搜索 &#xff08;2&#xff09;element ui Cascader级联选择器 &#xff08;3&#xff09;Router-路由配置 &#xff08;4&#xff09;Router-动态导入 &#xff08;1&#xff09;element-ui search搜索 我…

日撸 Java 三百行day21-22

文章目录说明day21 二叉树的深度遍历的递归实现1. 二叉树的遍历2. 二叉树深度&#xff0c;结点数3. 代码day 22 二叉树的存储1. 思路2.层次遍历代码3.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把…

《程序员面试金典(第6版)》面试题 10.02. 变位词组

题目描述 编写一种方法&#xff0c;对字符串数组进行排序&#xff0c;将所有变位词组合在一起。变位词是指字母相同&#xff0c;但排列不同的字符串。 注意&#xff1a;本题相对原题稍作修改 示例: 输入: ["eat", "tea", "tan", "ate&quo…

Python接口自动化测试实战详解

接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中&#xff0c;我们…

资源覆盖-overlay机制

1. SRO–Static resource overly(静态替换)2. RRO–Runtime resource overlay (运行时替换) 静态 RRO 1.写配置文件 以下代码显示了一个示例 AndroidManifest.xml。 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.exa…

【Redis】Redis基础命令集详解

文章目录【Redis01】Redis常用命令一、基础命令1、ping&#xff08;心跳命令&#xff09;2、get/set&#xff08;读写键值命令&#xff09;3、select&#xff08;切换数据库&#xff09;4、dbsize&#xff08;查看key数量&#xff09;5、flushdb&#xff08;删除当前库中所有数…

用starter实现Oauth2中资源服务的统一配置

一、前言 Oauth2中的资源服务Resource需要验证令牌&#xff0c;就要配置令牌的解码器JwtDecoder&#xff0c;认证服务器的公钥等等。如果有多个资源服务Resource&#xff0c;就要重复配置&#xff0c;比较繁锁。把公共的配置信息抽取出来&#xff0c;制成starter&#xff0c;可…

【案例实践】Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用

查看原文>>>Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践应用 目录 第一章、理论基础 第二章、开发环境搭建 第三章、遥感大数据处理基础 第四章、典型案例操作实践 第五章、输入输出及数据资产高效管理 第六章、云端数据论文出版级可视化 随…

图片懒加载及Vue自定义图片懒加载指令

文章目录监听滚动的方式IntersectionObserver方式自定义图片懒加载vue指令1自定义图片懒加载vue指令2lazyLoadImage.jsmain.js中注册指令组件中使用学习链接&#xff1a;前端必会的图片懒加载vue自定义指令实现图片懒加载监听滚动的方式 img的src先都用一张默认的图片&#xf…

论文推荐:DCSAU-Net,更深更紧凑注意力U-Net

这是一篇23年发布的新论文&#xff0c;论文提出了一种更深、更紧凑的分裂注意力的U-Net&#xff0c;该网络基于主特征守恒和紧凑分裂注意力模块&#xff0c;有效地利用了底层和高层语义信息。 DCSAU-Net 1、架构 DCSAU-Net 的编码器首先使用 PFC 策略从输入图像中提取低级语义…

适用于 Windows 11/1 0电脑的 8 款最佳免费数据恢复软件

在这个数字办公时代&#xff0c;我们总是在电脑前工作&#xff0c;处理海量数据&#xff0c;存储重要文件。然而&#xff0c;系统崩溃、病毒攻击或人为错误都会导致极度绝望的数据丢失。此时&#xff0c;专业的数据备份和恢复工具就是不幸者的救命稻草。因此&#xff0c;这篇文…

深入剖析Compose布局, 一步步教你打造自适应UI界面

理解Compose布局 Compose 是一种基于声明式编程的 Android UI 工具包&#xff0c;它将可组合的 UI 要素视为函数&#xff0c;并使用 Kotlin DSL 进行构建和组合。Compose 还提供了相应的布局系统和一组用于嵌套和组合 UI 要素的基本函数。 Compose 的核心布局系统由两个部分组…

Windows使用Dockers+battery historian踩坑记

1、首先&#xff0c;需要翻墙。 2、然后安装Dockers&#xff0c;网上好多博客说安装Docker Toolbox&#xff0c;我亲测无效&#xff0c;卸载后安装Docker for Windows&#xff0c;安装完成后打开&#xff0c;会提示&#xff1a; Hardware assisted virtualization and data e…

Promise这样理解更简单

一、Promise小白怎么用&#xff1f;从一个故事开始吧 1、先来一段废话故事 您是一名在古老迷失城市中探险的冒险家。您身处一间装饰华丽的房间中&#xff0c;四周布满了古老的壁画和雕塑。您发现有两个通道分别通向不同的方向&#xff0c;分别是&#xff1a;一个黑暗的通道和…

Hive源码阅读环境准备

源码地址 hive源码地址在github或gitee均可以下载&#xff0c;如果没有vpn工具&#xff0c;使用gitee网速更快点。 github地址为: https://github.com:edingbrugh/hive.gitgitee地址如下: https://gitee.com/apache/hive.git环境要求 本地或远程已经安装hivejdk 8maven 3.6…

高权限注入跨库注入

简介 上篇文章中我们讲述了如何进行手工注入&#xff0c;也通过墨者学院的靶场&#xff0c;真实的感受了SQL注入的感觉。这篇文章我们将继续介绍SQL注入。 高权限注入 含义 世界上有千千万万的网站&#xff0c;我们也都知道网站需要部署在服务器上&#xff0c;但是如果一台…

C++基础知识-----命名空间

本期开始我们来对C进行学习 目录 1.C关键字 2.命名空间 3.C的输入与输出 1.C关键字 C总计63个关键字&#xff0c;C语言32个关键字 asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcase…