MIMO检测中 Zero Forcing 算法比 ML 差的思考
(录制的视频在:
1) https://www.bilibili.com/video/BV1aL411S7ez/
2)https://www.bilibili.com/video/BV1TV4y1Q7yw/ )
MIMO 检测中, maximum likelihood (ML) 是最优的检测,其数学表达式为:
表示星座图的集合. Y 是接收到的数据.
而 zero forcing (ZF) 是基于下面这个思想:
公式 (2) 与公式 (1) 的区别在于对 X 的限制,公式 (1) 中的 X 要在调制的 constellation 星座图的点中选择,而公式 (2) 没有这个限制,可以自由选择,显然公式 (2) 的解会偏离公式 (1) 的解。
公式 (2) 的解,再用 maximum likelihood 方式进行解调:
由公式 (2) 得到的最优解为(当 H 是方阵且可逆):
将 (4) 代入 (3) 有:
这里假定 H 是方阵且可逆的,则 H 的逆矩阵也可以做 SVD 分解:
则公式 5 中的:
我们把 看成一个向量,则矩阵 U 因为是单位正交矩阵,所以,是一个刚性旋转,不改变被作用的向量的长度,因此 公式 (7) 可以继续推导为:
公式 (8) 中,我们把 Y- HX 看成一个向量,记为 Z,则 是对这个向量 Z 做旋转,不改变向量长度,旋转后的向量记为
, 则
矩阵,是对向量各个分量进行缩放:
情况一: 所有特征值都相等
当 时,公式 (8) 可以写成:
因为 是单位正交的矩阵,因此,是一个刚性旋转,不改变后面向量的长度,因此公式 (9) 可以写成:
这种情况下, Zero Forcing 算法就与 Maximum Likelihood 算法的性能一致。
情况二:噪声非常小,趋近于 0
那么公式 (8) 中,一定能找到一个 X 向量,使得 Y - HX 为 0 向量,因为是 0 向量,所以,这个就是最小值,不可能找到另外一个向量 X' ,使得 (8) 的结果比 0 小。所以,在噪声为 0 的情况下,Zero Forcing 算法就与 Maximum Likelihood 算法的性能一致。
情况三:特征值不全都相等,也含有噪声
则公式 (8) 可以写成:
公式 (11) 中第一个等号那里,相当于对向量 Y-HX 先做旋转,然后再在各个维度上做缩放,例如都是都是逆时针旋转一个固定角度,两个维度分别是放大三倍和缩小一倍(以二维向量为例子,方便画图理解),则不同的向量,即使长度相同,但是角度不同,经过旋转和缩放后,长度将会不同.
下图蓝色是初始向量,旋转 后变成绿色向量,然后经过 X 轴放大 三倍, Y 轴缩小 1/2 ,变成右边紫色向量。

用相同的旋转和缩放,对下图蓝色初始向量进行操作,得到右边紫色向量。

从上面两个实例可以看出,旋转缩放前,第一个图的原始向量要比第二个图的原始向量要短,但是做了同样的旋转缩放后,第一个图的结果向量反而比第二个图的结果向量要长,可见,旋转缩放后,会改变向量长度的大小关系,进而影响 Zero Forcing 算法达不到 Maximum Likelihood 算法的效果,即可能找到的不是最优解。
现在我们来对比一下公式 (1) 和公式 (5) 中的第二行,为了讨论方便,我都列在这里:
这两个公式看起来很像,都是在 X 的所有可能取值中进行遍历,找对应向量长度的最小值,但是,从几何意义上,这两者有本质性的区别,我们接下来分析一下,并且能看出来 Zero Forcing 算法为什么比 Maximum Likelihood 算法的性能要差了。
我们以 H 矩阵是方阵且可逆的, H 做 SVD 分解为:
其中 U ,V 都是单位正交矩阵,在几何上就是对向量做旋转,而 是对角矩阵,对角线上的元素是其特征值。
公式 (12) 的含义是,发送的某个特定数据,经过 H 矩阵作用,然后加高斯噪声,得到的结果是 Y,然后遍历所有 X 的可能取值,对每个取值同样做 H 矩阵的作用,然后与收到的 Y 比较,最近的那个就是最佳估计。
公式 (13) 的含义,是收到的数据 Y (发送的某个特定数据,经过 H 矩阵作用,然后加高斯噪声,得到的结果是 Y, Y = HX + W) 通过 H 的反作用回到发送时的情况,然后再与 X 的各种取值进行比较。那么这个反作用的时候,是把噪声 W 也反作用了。本来噪声在各个天线上(体现在空间中的各个维度上),是同性分布的,即相同的概率分布,但是经过 H 的反作用后,噪声就会有的被放大,有的被缩小,导致各个维度上的概率分布是不同的。
我们以 2x2 MIMO 为例子,用 BPSK 调制,那么每根天线上发送的要么是 +1, 要么是 -1,则两根天线上发的数据就有四种组合,我们把在某个时刻两个天线上发送的数据看成一个向量,则这个向量是二维的,那么我们就可以在二维空间上来理解.
那么,我们发送的向量,在二维空间中,只有四个向量,分别在四个象限的中间点上,以 横坐标为第一个维度,纵坐标为第二个维度,则四个向量在二维空间中的坐标分别为 [+1,+1], [-1,+1], [-1, -1], [+1, -1]. 如下图所示,以先旋转一个角度,再横坐标放大为原来的 3 倍,纵坐标缩小为原来的 1/2, 然后再做已给旋转。我们来看公式 (12) 和 (13) 对应的效果。

旋转拉伸之后的

原始噪声的分布

反变换之后的噪声分布

下图是仿真结果,用 4x4 的 MIMO.
