目录
一. 介绍
二. 极大似然译码
三. 破零译码算法
四. 最小均方误差算法
五. 球形译码
一. 介绍
发射天线数记为Mt,接收天线数记为Mr。由此发射信号x为向量:
接受信号y为向量:
信道H为矩阵:
利用n代表噪声向量,由此可得MIMO通信系统模型为:
y=Hx+n
噪声服从复高斯分布,通常假定均值为0,方差为1,如下:
发射信号的总功率限定为,由此需要发射信号x的均值满足如下关系:
接收端在收到y后,就尝试译码出x,但译码不一定完全正确,所以记为(estimate):
接收端在译码之前通常已知:信号矩阵(channel matrix)H,集合X,y
二. 极大似然译码
Maximum likelihood:ML,极大似然译码
在接下来的讨论中,我们不妨假设发射信号x为均匀分布。
如果想要译码错误率最小,那么最优的则是极大似然译码。假定噪声在不同的维度上独立同分布(IID),那么接收端采用极大似然译码时,其本质就是解决如下目标函数(objective function):
理解:遍历所有可能得发射向量x,很明显需要尝试次。所以极大似然译码算法的复杂度与发射天线Mt成指数关系。
三. 破零译码算法
zero forcing:ZF,迫零算法
迫零算法属于线性译码。线性译码的复杂度与对矩阵进行求逆(inverting),分解(factorizing)是差不多的。简单来讲就是从空间的角度消除信道的影响,也就是所谓的MIMO均衡过程。来看下对应的英文表达:
Spatially decoupling the effects of the channel by a process known as MIMO equalization
也就是对接收向量y乘以MIMO均衡矩阵A,如下:
由此可得:
此步的结果不一定在原始的集合中,所以需要进一步运算得到。通常就是利用逐维度进行译码,该步译码方程可记作:
理解:从不同的维度上,映射到离其最近的星座点(constellation point)上。
接下来,我们将详细讲解迫零算法。
需要注意的是,线性译码的精髓是如何已知y,求解
将迫零算法需要面临的方程问题如下:
与极大似然译码相比,看起来方程很类似。细心的话会发现去掉了对x范围的限制,由此便降低了算法的复杂度。
如何H为可逆的方阵(square invertible)。这个问题可直接求解为:
对于可逆的方阵,也就是:
在其他情况则可以考虑矩阵的伪逆。通常在通信系统中,要求接收天线要不少于发射天线,也就是:
这样就可以保证信道矩阵H中有Mt列线性独立的列,由此伪逆(Moore-Penrose pseudoinverse)可计算为:
对信道矩阵H求逆的算法复杂度为立方。当然从得到,根据前面的方程,很明显与天线之间呈现线性关系。
四. 最小均方误差算法
linear minimum mean squared error (L-MMSE):线性最小均方误差算法
如果信道矩阵H的奇异值(singular value)太大,迫零算法会导致噪声扩大(noise amplification)。根据线性代数的基础,此性质可用矩阵H的条件数(condition number)来衡量,定义为最大奇异值与最小奇异值的比值。
如果条件数趋近于1,那么迫零算法误差相对不大,矩阵well conditioned。
如果条件数过大,那么迫零算法误差将也会变大,矩阵ill conditioned。
对迫零算法的目标函数,添加一个调节项,也就是:
该目标函数的求解也不难,可得:
对于L-MMSE,上式子中的定义为天线数除以总功率,也就是:
该方程求解的本质为:
理解:上式子中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与其转置不会改变向量的l2范数(squared distance norm),由此可得:
以上式子的运算就利用到了:
最后一个等号:R为上三角矩阵。
当半径r取无穷大时,方程便会得到ML算法的解。
当半径r取值不大时,借助深度优先搜寻(depth first search)或者宽度优先搜寻(breadth first search),利用上三角矩阵R的性质,可以去掉很多离得远的x,由此便可以降低算法复杂度。
实践证明球形译码的输出结果一般与ML输出结果类似。