本文主要内容包含:大规模MIMO下行链路经典预编码算法详解,MRT、ZF、RZF、SVD、BD、GZI、MMSE等预编码算法详解,编码矩阵,优缺点等,通过阅读本文,你可以对常见线性预编码算法有全面的了解。

如果你还不知道什么是预编码或者想完整地了解大规模MIMO下行链路预编码基础知识,推荐你先看看
【精心整理】大规模MIMO下行链路预编码(1)

大规模MIMO下行链路经典线性预编码算法

1. 系统模型

考虑由一个基站和 K K K个独立用户组成的单小区下行多用户MIMO系统,其中基站配置 M M M根天线,用户 k k k配置 N k N_k Nk根天线( k = 1 , 2 , ⋯   , K k=1, 2,\cdots, K k=1,2,,K),该系统配置可以简化表示成 { N 1 , N 2 , ⋯   , N K } × M \{N_1,N_2,\cdots,N_K \}\times M {N1,N2,,NK}×M 。设基站向用户 k k k发送的数据向量为 d k = [ d k 1 , d k 2 , ⋯   , d k N k ] H ∼ C N ( 0 , I N k ) \boldsymbol d_k=[ d_{k1},d_{k2},\cdots, d_{kN_k}]^H \sim \mathcal {CN}(\boldsymbol 0,\boldsymbol I_{N_k}) dk=[dk1,dk2,,dkNk]HCN(0,INk),且每个用户的数据向量互相独立,发给每个用户的数据向量都经过一个预编码矩阵 V k ∈ C M × L k \boldsymbol V_k \in \mathbb C^{M \times L_k} VkCM×Lk,其中 L k L_k Lk为用户 k k k所支持的数据流数目,满足 L K ≤ N k L_K \leq N_k LKNk,则基站得的发送信号为:
s = ∑ i = 1 K V i d i (1) \boldsymbol s=\sum \limits_{i=1}^K \boldsymbol V_i\boldsymbol d_i \tag{1} s=i=1KVidi(1)
假设基站端发射功率限制为 P P P,那么发送信号满足条件
E { t r ( s s H ) } = ∑ i = 1 K E { t r ( V i d i d i H V i H ) } = ∑ i = 1 K t r ( V i V i H ) ≤ P (2) \mathbb E\{tr(ss^H)\}=\sum \limits _{i=1} ^K \mathbb E\{tr(V_id_id_i^HV_i^H)\}=\sum \limits _{i=1} ^K tr(V_iV_i^H) \leq P \tag{2} E{tr(ssH)}=i=1KE{tr(VididiHViH)}=i=1Ktr(ViViH)P(2)
用户 k k k接收的信号可以表示为
y k = G k H s + n k = H k ∑ i = 1 K V i d i + n k (3) \boldsymbol y_k= \boldsymbol G_k^H\boldsymbol s+\boldsymbol n_k=\boldsymbol H_k\sum \limits_{i=1}^K \boldsymbol V_i\boldsymbol d_i +\boldsymbol n_k\tag{3} yk=GkHs+nk=Hki=1KVidi+nk(3)
式中, G k ∈ C M × N k \boldsymbol G_k \in \mathbb C^{M \times N_k} GkCM×Nk表示用户 k k k到基站的信道矩阵( ⟹ H k = G k T \Longrightarrow \boldsymbol H_k=\boldsymbol G_k^T Hk=GkT即为基站到用户 k k k的信道矩阵), n k ∼ C N ( 0 , σ 2 I N k ) \boldsymbol n_k\sim \mathcal {CN}(\boldsymbol 0, \sigma^2 \boldsymbol I_{N_k}) nkCN(0,σ2INk)表示相应的加性独立同分布(i.i.d.)高斯白噪声向量。将所有用户的接收信号统一表示为
y = H s + n = [ H 1 H 2 ⋮ H K ] s + n (4) \boldsymbol y=\boldsymbol H \boldsymbol s+\boldsymbol n= \begin{bmatrix}\boldsymbol H_1 \\\boldsymbol H_2\\ \vdots \\\boldsymbol H_K\end{bmatrix}\boldsymbol s+\boldsymbol n \tag{4} y=Hs+n=H1H2HKs+n(4)
式中, H = [ H 1 H 2 ⋮ H K ] = [ h 11 h 12 ⋯ h 1 M h 21 h 22 ⋯ h 2 M ⋮ ⋮ ⋱ ⋮ h K 1 h K 2 ⋯ h K M ] ∈ C ∑ k = 1 K N k × M \boldsymbol H =\begin{bmatrix}\boldsymbol H_1\\\boldsymbol H_2\\ \vdots \\\boldsymbol H_K \end{bmatrix}= \begin{bmatrix} \boldsymbol h_{11}&\boldsymbol h_{12}&\cdots&\boldsymbol h_{1M} \\ \boldsymbol h_{21}&\boldsymbol h_{22}&\cdots&\boldsymbol h_{2M} \\ \vdots& \vdots&\ddots& \vdots\\\boldsymbol h_{K1}&\boldsymbol h_{K2}&\cdots&\boldsymbol h_{KM} \end{bmatrix} \in \mathbb C^{\sum\limits_{k=1}^K N_k \times M} H=H1H2HK=h11h21hK1h12h22hK2h1Mh2MhKMCk=1KNk×M表示基站到用户的总信道矩阵,注意其元素 h i j h_{ij} hij也是一个矩阵, h i j \boldsymbol h_{ij} hij表示基站第 j j j根天线到第 i i i个用户的信道矩阵

假设用户信道是平坦衰落的,基站端可以通过信道估计获得准确的信道状态信息,并且假设移动端知道自己的信道状态信息。下行链路CSI的获取:TDD ⟹ \Longrightarrow 利用上下行信道互易性原理;FDD:通过反馈信道
在这里插入图片描述

将(3)写为如下形式:
y k = H k ∑ i = 1 K V i d i + n k = H k V k d k + H k ∑ i = 1 , i ≠ k K V i d i + n k (5) \boldsymbol{y}_k=\boldsymbol H_k\sum \limits_{i=1}^K \boldsymbol V_i\boldsymbol d_i +\boldsymbol n_k=\boldsymbol {H}_k\boldsymbol {V}_k\boldsymbol d_k+\boldsymbol {H}_k\sum\limits_{i=1,i\neq k}^K\boldsymbol {V}_i\boldsymbol d_i+\boldsymbol{n}_k\tag{5} yk=Hki=1KVidi+nk=HkVkdk+Hki=1,i=kKVidi+nk(5)
上式中,第一项表示期望接收信号,第二项表示共信道干扰(CCI)【也称为多用户干扰,MUI】,第三项是噪声项,对于用户 k k k来说第二项和第三项是毫无用处的,会影响用户信号的正常接收,因此线性预编码的主要目标就是在一定的功率限制条件下,使得共信道干扰和噪声项的影响尽量小,最大化期望接收信号

2. MRT预编码

由于可以平衡系统性能和计算复杂度,最大比传输(MRT)预编码【又称作匹配滤波器(MF)预编码】是最简单易实现的预编码算法,通过最大化接收信噪比(SNR)实现。在大规模MIMO系统中,当基站天线数 M M M足够大时,最简单的MRT线性预编码方案便可以得到最优的系统性能。

在发射端已知完美信道状态信息的前提下,MRT线性预编码矩阵为:
V = β M R T H H (6) \boldsymbol V=\beta_{MRT}\boldsymbol H^H \tag6 V=βMRTHH(6)
(注:以上编码矩阵后可以加上功率分配矩阵组成整个预编码矩阵)

式中, β M R T = 1 t r ( H H H ) \beta_{MRT}=\sqrt{\frac{1}{tr(HH^H )}} βMRT=tr(HHH)1 为约束基站发送功率的约束因子。大规模MIMO系统中基站天线数的不断增加使得信道矩阵列向量之间逐渐呈现正交性,即不同终端间的干扰逐渐降低甚至被完全消除,因此最简单的 MRT 预编码下便可以获得最优的频谱效率和最好的信号传输质量,且复杂度最低。

传统MIMO系统中,匹配滤波预编码方案的侧重点在于接收端用户的信号增益最大化,但在多用户系统的场景下,随着传输信道相关性的提升,此方案由于没有考虑如何对用户间的干扰进行处理,将会导致整个系统性能快速下降。

3. 基于广义信道求逆的预编码

3.1 ZF预编码

迫零预编码的主要思想是利用信道的伪逆矩阵形式对发送数据进行编码处理,以达到完全消除其他用户干扰(共信道干扰)的目的。

由(5)可知,为了消除CCI(即让第二项为0),预编码矩阵需满足:
H i V k = 0 , i = 1 , 2 , ⋯   , K , i ≠ k (7) \boldsymbol {H}_i\boldsymbol {V}_k=0, i=1,2,\cdots,K,i \neq k \tag{7} HiVk=0,i=1,2,,K,i=k(7)
即,迫零预编码矩阵 V k \boldsymbol V_k Vk必须处于除目标用户 k k k外的其他用户联合信道矩阵 H k ~ = [ H 1 ⋮ H k − 1 H k + 1 ⋯ H K ] \widetilde {\boldsymbol H_k} =\begin{bmatrix}\boldsymbol H_1 \\ \vdots\\ \boldsymbol H_{k-1} \\ \boldsymbol H_{k+1} \\ \cdots\\ \boldsymbol H_K \end{bmatrix} Hk =H1Hk1Hk+1HK的零空间内,信道矩阵的伪逆可以实现以上要求, H \boldsymbol H H的伪逆矩阵为
H ^ = H H ( H H H ) − 1 = [ H ^ 1 , H ^ 2 ⋯   , H ^ K ] (8) \hat {\boldsymbol H}=\boldsymbol H^H(\boldsymbol H\boldsymbol H^H)^{-1}=\begin{bmatrix}\hat {\boldsymbol H}_1, \hat{\boldsymbol H}_2 \cdots ,\hat{\boldsymbol H}_K \end{bmatrix} \tag{8} H^=HH(HHH)1=[H^1,H^2,H^K](8)
假设移动端都只配备单根天线,即 N k = 1    ( k = 1 , 2 , ⋯   , K ) N_k=1 \space\space(k=1, 2,\cdots, K) Nk=1  (k=1,2,,K),则 H ^ k ∈ C M × 1    ( k = 1 , 2 , ⋯   , K ) \hat {\boldsymbol H}_k \in \mathbb C^{M \times 1}\space\space(k=1, 2,\cdots, K) H^kCM×1  (k=1,2,,K),为了使预编码矩阵满足功率约束条件(2),令
V k = ξ H ^ k P k 1 / 2 (9) \boldsymbol V_k=\xi\hat {\boldsymbol H}_k\boldsymbol P_k^{{1}/{2}} \tag{9} Vk=ξH^kPk1/2(9)
式中,功率控制参数满足 ξ 2 = P t r ( P ( H H H ) − 1 ) , P = d i a g { P 1    P 2    ⋯    P K } \xi^2=\frac{P}{tr(\boldsymbol P(\boldsymbol H\boldsymbol H^H)^{-1})},\boldsymbol P=diag\{\boldsymbol P_1\space\space\boldsymbol P_2\space\space\cdots\space\space \boldsymbol P_K\} ξ2=tr(P(HHH)1)P,P=diag{P1  P2    PK}是功率分配矩阵。

3.2 RZF预编码

当移动端所处环境中缺少散射体,或者用户之间的距离很近,会导致信道矩阵会因为高度的相关性而成为病态矩阵(欠秩),因而产生噪声放大问题。在低信噪比的情况下,噪声放大问题会严重影响系统性能。正则化迫零预编码则不仅考虑了用户之间的信号干扰,也考虑了噪声问题,所以在性能上优于迫零预编码。

正则化迫零预编码主要是在信道求逆之前加上一个单位阵(此单位阵的作用即为减弱信道矩阵的相关性,避免求逆时产生噪声放大问题),以替代对信道的直接求逆,其编码形式为
V = [ V 1 V 2 ⋯ V K ] = ξ H H ( H H H + α I ) − 1 P 1 / 2 (10) \boldsymbol V =\begin{bmatrix}\boldsymbol V_1& \boldsymbol V_2 &\cdots& \boldsymbol V_K \end{bmatrix}=\xi\boldsymbol H^H(\boldsymbol H\boldsymbol H^H+\alpha \boldsymbol I)^{-1} \boldsymbol P^{1/2} \tag{10} V=[V1V2VK]=ξHH(HHH+αI)1P1/2(10)
式中, ξ 2 = P t r ( P H ( H H H + M α I ) − 2 H H ) \xi^2=\frac{P}{tr(\boldsymbol P\boldsymbol H(\boldsymbol H^H\boldsymbol H + M\alpha \boldsymbol I)^{-2}\boldsymbol H^H)} ξ2=tr(PH(HHH+MαI)2HH)P为功率归一化参数, V k \boldsymbol V_k Vk为用户 k k k的预编码矩阵, P = d i a g { P 1    P 2    ⋯    P K } \boldsymbol P=diag\{\boldsymbol P_1\space\space\boldsymbol P_2\space\space\cdots\space\space \boldsymbol P_K\} P=diag{P1  P2    PK}是功率分配矩阵, α \alpha α为正则化因子,用来平衡用户间的干扰与信道噪声。根据最大化信号干扰噪声比(SINR)准则,最优正则化因子为
α o p t = K σ 2 (11) \alpha_{opt}=K\sigma^2 \tag{11} αopt=Kσ2(11)

此时,正则化迫零预编码的性能是最优的,其既考虑了多用户接收信号之间干扰,又考虑了噪声因素的影响,不管是在高信噪比下还是低信噪比下,都有不错的性能表现。

根据以上推导可以发现, α → 0 \alpha\rightarrow 0 α0 α → + ∞ \alpha\rightarrow +\infty α+,RZF分别退化为ZF和MRT

4. 基于SVD的预编码

4.1 矩阵的奇异值分解

奇异值分解(Singular Value Decomposition, SVD)是分析矩阵的一个强大工具。之所以说它强大,是因为任何一个矩阵 H H H , 不管是长的还是方的,也不管是实数的还是复数的,只要是一个矩阵,就可以分解为如下的形式:
H = U Σ V H (12) \boldsymbol H=\boldsymbol U\boldsymbol \Sigma \boldsymbol V^H \tag{12} H=UΣVH(12)
其中, Σ \boldsymbol \Sigma Σ是对角矩阵,其对角线上的元素是非负实数,一般按照从大到小的顺序排列。 U U U V V V是酉矩阵,即复数正交方阵,满足:
U U H = U H U = I n V V H = V H V = I m (13) \boldsymbol U\boldsymbol U^H =\boldsymbol U^H\boldsymbol U=\boldsymbol I_n \\ \tag{13} \boldsymbol V\boldsymbol V^H =\boldsymbol V^H\boldsymbol V=\boldsymbol I_m UUH=UHU=InVVH=VHV=Im(13)
  当 H ∈ C N × M \boldsymbol H\in \mathbb{C} ^ {N \times M} HCN×M时, Σ \boldsymbol \Sigma Σ N × M N×M N×M非负对角矩阵, U \boldsymbol U U V \boldsymbol V V分别是 N × N N×N N×N M × M M×M M×M的酉矩阵。 Σ \boldsymbol \Sigma Σ往往不是方阵,此时形成对角矩阵 Σ \boldsymbol \Sigma Σ需要在一个对角方阵的行或者列的方向上补零。矩阵 Σ \boldsymbol \Sigma Σ对角线上的值 λ i , i = 1 , 2 , ⋯   , m i n ( M , N ) \lambda_i,i=1,2,\cdots,min(M,N) λi,i=1,2,,min(M,N)被称作矩阵 H \boldsymbol H H奇异值,注意,奇异值是非负实数

4.2 SVD预编码

对信道矩阵 H \boldsymbol H H进行SVD,有
y = H s + n = U Σ V H s + n (14) \boldsymbol y =\boldsymbol H\boldsymbol s+\boldsymbol n=\boldsymbol U\boldsymbol \Sigma \boldsymbol V^H\boldsymbol s+\boldsymbol n \tag{14} y=Hs+n=UΣVHs+n(14)
如果发射机知道信道矩阵,就可以得到它的SVD ,并用矩阵 V \boldsymbol V V 对一个要发送的信息 d \boldsymbol d d进行编码,得到每个天线的发射信号 s \boldsymbol s s,即 s = V d \boldsymbol s=\boldsymbol V\boldsymbol d s=Vd,带入(19)
y = U Σ V H V d + n = U Σ d + n (15) \boldsymbol y=\boldsymbol U\boldsymbol \Sigma \boldsymbol V^H\boldsymbol V\boldsymbol d+\boldsymbol n= \boldsymbol U\boldsymbol \Sigma \boldsymbol d+\boldsymbol n \tag{15} y=UΣVHVd+n=UΣd+n(15)
如果接收机也知道信道矩阵,那么在收到信号后,等式两边左乘以 U H \boldsymbol U^H UH
U H y = U H U Σ d + U H n (16) \boldsymbol U^H \boldsymbol y=\boldsymbol U^H\boldsymbol U\boldsymbol \Sigma \boldsymbol d+\boldsymbol U^H\boldsymbol n \tag{16} UHy=UHUΣd+UHn(16)
对以上表达式稍作处理:
y ′ = Σ d + n ′ (17) \boldsymbol y'=\boldsymbol \Sigma \boldsymbol d+\boldsymbol n' \tag{17} y=Σd+n(17)
注意,由于 Σ \boldsymbol \Sigma Σ是一个对角矩阵,这意味着,经过SVD变换后的MIMO系统等价于多个互不干扰的并行信道,MIMO 信道的容量是这些井行信道的容量的和
y i ′ = λ i d i + n i ′ ,   i = 1 , 2 , ⋯   , m i n ( M , N ) (18) y'_i=\lambda_id_i+n'_i,\ i=1,2,\cdots,min(M,N) \tag{18} yi=λidi+ni, i=1,2,,min(M,N)(18)
  在线性代数里面有一个专门的术语来描述一个矩阵的特性,这就是矩阵的秩(rank) 。矩阵的秩和其奇异值之间存在关系,即秩就是不为零的奇异值的个数信道矩阵的秩就是能够同时发送的数据的个数,每一个数据叫作一个流(stream),也叫作一个层(layer),每个流可以单独进行编码调制为了控制流的个数,采用一个编码矩阵 C \boldsymbol C C对流数据进行编码, MIMO方程变为
y N × 1 = H N × M C M × R d R × 1 + n N × 1 (19) \boldsymbol y_{N \times 1}=\boldsymbol H_{N \times M}\boldsymbol C_{M \times R}\boldsymbol d_{R \times 1}+\boldsymbol n_{N \times1} \tag{19} yN×1=HN×MCM×RdR×1+nN×1(19)
如果信道矩阵的秩是 R R R,那么可以同时发送 R R R个信息数据,所以,信息数据 d \boldsymbol d d的维数是 R × 1 R \times 1 R×1 。这个数据被编码矩阵 C \boldsymbol C C进行编码, C \boldsymbol C C的维度是 M × R M \times R M×R;编码后得到 M M M根发射天线上的发射数据。

因此,编码矩阵 C \boldsymbol C C的理想选择是SVD的 V \boldsymbol V V矩阵中最大的前 R R R 个奇异值对应的列组成的矩阵(当 R = M R=M R=M时, C = V P 1 / 2 \boldsymbol C=\boldsymbol V\boldsymbol P^{1/2} C=VP1/2,第二项用于分配功率)。实际情况中,矩阵 V \boldsymbol V V 不容易获得,可以通过定义不同的预编码矩阵码本,以匹配不同的信道矩阵。

4.3 GZI预编码(QR-SVD)

迫零预编码的局限:仅适用于移动端配备单天线 ⟹ \Longrightarrow 广义迫零信道反转(GZI)预编码,在移动端配备多天线的情况下, H ^ k ∈ C M × N k    ( k = 1 , 2 , ⋯   , K ) \hat {\boldsymbol H}_k \in \mathbb C^{M \times N_k}\space\space(k=1, 2,\cdots, K) H^kCM×Nk  (k=1,2,,K),对 H ^ k \hat {\boldsymbol H}_k H^k进行QR分解,即
H ^ k = Q ^ k R ^ k   ( k = 1 , 2 , ⋯   , K ) (20) \hat {\boldsymbol H}_k=\hat {\boldsymbol Q}_k\hat {\boldsymbol R}_k\space(k=1, 2,\cdots, K) \tag{20} H^k=Q^kR^k (k=1,2,,K)(20)
其中, R ^ k \hat {\boldsymbol R}_k R^k是一个维度为 N k × N k N_k \times N_k Nk×Nk的上三角矩阵, Q ^ k \hat {\boldsymbol Q}_k Q^k是一个维度为 M × N k M \times N_k M×Nk的矩阵,其列向量由 H ^ k \hat {\boldsymbol H}_k H^k的正交基组成。

由ZF预编码知, H k ~ H ^ k = 0 \widetilde {\boldsymbol H_k}\hat {\boldsymbol H}_k=\bold 0 Hk H^k=0,即 H k ~ Q ^ k R ^ k = 0 \widetilde {\boldsymbol H_k}\hat {\boldsymbol Q}_k\hat {\boldsymbol R}_k=\bold 0 Hk Q^kR^k=0,由于 R ^ k \hat {\boldsymbol R}_k R^k为对角元素非零的上三角矩阵,是可逆矩阵,可得 H k ~ Q ^ k = 0 \widetilde {\boldsymbol H_k}\hat {\boldsymbol Q}_k =\bold 0 Hk Q^k=0,可见,矩阵 Q ^ k \hat {\boldsymbol Q}_k Q^k的列向量是 H k ~ \widetilde {\boldsymbol H_k} Hk 零空间的正交基。 ⟹ \Longrightarrow 矩阵 Q ^ k \hat {\boldsymbol Q}_k Q^k列向量的线性组合而构成的预编码矩阵仍然可以全消除共信道干扰影响。

设所有用户的初始预编码矩阵为 V k ′ = Q ^ k \boldsymbol V'_k=\hat {\boldsymbol Q}_k Vk=Q^k,则经过预编码,用户 k k k的等效信道矩阵为 H k Q ^ k \boldsymbol H_k\hat {\boldsymbol Q}_k HkQ^k预编码后,多用户MIMO下行链路信道转化成了 K K K个互不干扰的等效子信道 K K K并行的独立子信道集合可以表示为

H ′ = [ H 1 Q ^ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ H K Q ^ K ] (21) \boldsymbol H'=\begin{bmatrix} \boldsymbol H_1\hat {\boldsymbol Q}_1 & \cdots & \bold 0 \\ \vdots & \ddots & \vdots \\ \bold 0 & \cdots &\boldsymbol H_K\hat {\boldsymbol Q}_K \end{bmatrix}\tag{21} H=H1Q^100HKQ^K(21)
为了实现有效数据传输,再对每个等效用户信道进行SVD分解
H k Q ^ k = U k Σ k V ^ k H (22) \boldsymbol H_k\hat {\boldsymbol Q}_k=\boldsymbol U_k\boldsymbol \Sigma_k \hat {\boldsymbol V}_k^H \tag{22} HkQ^k=UkΣkV^kH(22)
则根据SVD预编码相关内容,可知此时用户 k k k的预编码矩阵为
V k = Q ^ k V ^ k P k 1 / 2 (23) \boldsymbol V_k=\hat {\boldsymbol Q}_k\hat {\boldsymbol V}_k \boldsymbol P_k^{1/2}\tag{23} Vk=Q^kV^kPk1/2(23)
式中, P k = d i a g { p k 1 , p k 2 , ⋯   , p k N k } \boldsymbol P_k=diag\{p_{k1},p_{k2},\cdots,p_{kN_k}\} Pk=diag{pk1,pk2,,pkNk}为用户 k k k的功率分配对角矩阵。所有用户的预编码矩阵可以统一表示为
V = [ Q ^ 1 V ^ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ Q ^ K V ^ K ] P 1 / 2 (24) \boldsymbol V=\begin{bmatrix} \hat {\boldsymbol Q}_1\hat {\boldsymbol V}_1 & \cdots & \bold 0 \\ \vdots & \ddots & \vdots \\ \bold 0 & \cdots &\hat {\boldsymbol Q}_K\hat {\boldsymbol V}_K \end{bmatrix}\boldsymbol P^{1/2}\tag{24} V=Q^1V^100Q^KV^KP1/2(24)
式中, P = d i a g { P 1 , P 2 , ⋯   , P K } \boldsymbol P=diag\{\boldsymbol P_1,\boldsymbol P_2,\cdots,\boldsymbol P_K\} P=diag{P1,P2,,PK}所有用户的功率分配矩阵,且满足如下功率限制条件
∑ k = 1 K ∑ j = 1 N k φ k j ≤ P (25) \sum \limits _{k=1}^K \sum \limits _{j=1}^{N_k} \varphi_{kj} \leq P \tag{25} k=1Kj=1NkφkjP(25)
  对式(12)的理解:第一项 Q ^ k \hat {\boldsymbol Q}_k Q^k消除了用户间干扰,第二项 V ^ k \hat {\boldsymbol V}_k V^k消除了用户内部多天线干扰,第三项 P k 1 / 2 \boldsymbol P_k^{1/2} Pk1/2用于分配功率,因此,解决了ZF编码只适用于移动端配备单天线的问题。

4.4 BD预编码(SVD-SVD)

块对角化预编码算法可以看作是迫零预编码在用户配置多天线时的一般形式,通过奇异值分解获得各用户相对于其他用户的正交基,这样就可以把多用户MIMO信道分解成并行的互不干扰的点对点的单用户MIMO信道。BD预编码所支持的用户数目受限制于基站的发送天线数目以及各个用户的接收天线数目,而且只是抑制了多用户之间的干扰,不考虑噪声问题,所以性能上有一定损失。

通常,BD预编码算法分两个步骤实现。第一步旨在为 H k ~ \widetilde {\boldsymbol H_k} Hk 的零空间计算一个正交基 V a \boldsymbol V^a Va,可用于消除MUI。因此,获得了等效的并行SU-MIMO信道。 第二步用于并行化每个用户流,并通过 V b \boldsymbol V^b Vb获得最大的预编码增益。因此,预编码矩阵 V \boldsymbol V V可以分为两部分: V = V a V b \boldsymbol V=\boldsymbol V^a\boldsymbol V^b V=VaVb。(注:此式未加上功率分配矩阵)

步骤1:获取第一个预编码矩 V a \boldsymbol V^a Va以减轻MUI

对于用户k,对 H k ~ \widetilde {\boldsymbol H_k} Hk 做SVD如下:
H ~ k = U ~ k Σ ~ k V ~ k H = U ~ k Σ ~ k [ V ~ k ( 1 ) V ~ k ( 0 ) ] H (26) {\widetilde{\boldsymbol {H}}}_k={\widetilde{\boldsymbol {U}}}_k{\widetilde{\boldsymbol {\Sigma}}}_k{\widetilde{\boldsymbol {V}}}_k^H={\widetilde{\boldsymbol {U}}}_k{\widetilde{\boldsymbol {\Sigma}}}_k\left[{\widetilde{\boldsymbol {V}}}_k^{\left(1\right)}{\widetilde{\boldsymbol {V}}}_k^{\left(0\right)}\right]^H \tag{26} H k=U kΣ kV kH=U kΣ k[V k(1)V k(0)]H(26)
式中 U ~ k {\widetilde{\boldsymbol {U}}}_k U k V ~ k {\widetilde{\boldsymbol {V}}}_k V k是酉矩阵, Σ ~ k \widetilde{\boldsymbol {\Sigma}}_k Σ k是包含 H ~ k {\widetilde{\boldsymbol {H}}}_k H k的奇异值的对角矩阵。将 V ~ k {\widetilde{\boldsymbol {V}}}_k V k分成两部分: V ~ k ( 1 ) {\widetilde{\boldsymbol {V}}}_k^{\left(1\right)} V k(1)由前 B k B_k Bk个非零特征值对应的特征向量组成, V ~ k ( 0 ) {\widetilde{\boldsymbol {V}}}_k^{\left(0\right)} V k(0)由后 M − B k M-B_k MBk个零值特征值对应的特征向量组成,其中 B k B_k Bk是矩阵 H ~ k {\widetilde{\boldsymbol {H}}}_k H k的秩。由于 V ~ k ( 0 ) {\widetilde{\boldsymbol {V}}}_k^{\left(0\right)} V k(0)构成了 H ~ k {\widetilde{\boldsymbol {H}}}_k H k的零空间的正交基,因此可获得BD预编码算法中用户k的第一预编码矩阵 V k a = V ~ k ( 0 ) \boldsymbol V_k^a={\widetilde{\boldsymbol {V}}}_k^{\left(0\right)} Vka=V k(0).

遍历所有用户后,K个用户的第一个预编码矩阵 V a = [ V 1 a , ⋯   , V k a , ⋯   , V K a ] \boldsymbol V^a=[\boldsymbol V_1^a,\cdots,\boldsymbol V_k^a,\cdots,\boldsymbol V_K^a] Va=[V1a,,Vka,,VKa].

步骤2:获得第二预编码矩阵以并行化每个用户流,并为每个用户实现最大的预编码增益

在第一次预编码操作之后,将MU-MIMO信道转换为并行SU-MIMO信道,如下:
  H V a = d i a g {   H 1 V 1 a , ⋯   ,   H k V k a , ⋯   ,   H K V K a } (27) {{\ \boldsymbol {H}}\boldsymbol {V}}^a=diag\{{{\ \boldsymbol {H}}_\mathbf{1}\boldsymbol {V}}_\mathbf{1}^a,\cdots,{\ \boldsymbol {H}}_k\boldsymbol {V}_k^a,\cdots,{{\ \boldsymbol {H}}_K\boldsymbol {V}}_K^a\} \tag{27}  HVa=diag{ H1V1a,, HkVka,, HKVKa}(27)
  我们定义用户k没有MUI时的有效信道矩阵为 H e f f k = H k V k a \boldsymbol H_{effk}=\boldsymbol {H}_k\boldsymbol {V}_k^a Heffk=HkVka H e f f k \boldsymbol H_{effk} Heffk的秩记为 B e f f k B_{effk} Beffk。对于用户k,为了获得最大的预编码增益,第二个SVD操作在有效信道矩阵上实现为
H e f f k = U ′ k Σ ′ k V ′ k H = U ′ k Σ ′ k [ V ′ k ( 1 ) V ′ k ( 0 ) ] H (28) {{\boldsymbol {H}}}_{effk}={{\boldsymbol {U'}}}_k{{\boldsymbol {\Sigma'}}}_k{{\boldsymbol {V'}}}_k^H={{\boldsymbol {U'}}}_k{{\boldsymbol {\Sigma'}}}_k\left[{{\boldsymbol {V'}}}_k^{\left(1\right)}{{\boldsymbol {V'}}}_k^{\left(0\right)}\right]^H \tag{28} Heffk=UkΣkVkH=UkΣk[Vk(1)Vk(0)]H(28)
式中 U ′ k {{\boldsymbol {U'}}}_k Uk V ′ k {{\boldsymbol {V'}}}_k Vk是酉矩阵, Σ ′ k {\boldsymbol {\Sigma'}}_k Σk是包含 H e f f k {{\boldsymbol {H}}}_{effk} Heffk的奇异值的对角矩阵。 V ′ k ( 1 ) {{\boldsymbol {V'}}}_k^{\left(1\right)} Vk(1)由前 B e f f k B_{effk} Beffk个非零特征值对应的特征向量组成。BD预编码算法中用户k的第二个预编码矩阵 V k b = V ′ k ( 1 ) \boldsymbol V_k^b={{\boldsymbol {V'}}}_k^{\left(1\right)} Vkb=Vk(1).

遍历所有用户后,K个用户的第一个预编码矩阵 V b = d i a g { V 1 b , ⋯   , V k b , ⋯   , V K b } \boldsymbol V^b=diag\{\boldsymbol V_1^b,\cdots,\boldsymbol V_k^b,\cdots,\boldsymbol V_K^b\} Vb=diag{V1b,,Vkb,,VKb}.

通过以上两个步骤,整个预编码矩阵表示为
V = V a V b P 1 / 2 = [ V ~ 1 ( 0 ) V ′ 1 ( 1 ) ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ V ~ K ( 0 ) V ′ K ( 1 ) ] P 1 / 2 (29) \boldsymbol V=\boldsymbol V^a\boldsymbol V^b\boldsymbol P^{1/2}=\begin{bmatrix} {\widetilde{\boldsymbol {V}}}_1^{\left(0\right)} {{\boldsymbol {V'}}}_1^{\left(1\right)}& \cdots & \bold 0 \\ \vdots & \ddots & \vdots \\ \bold 0 & \cdots &{\widetilde{\boldsymbol {V}}}_K^{\left(0\right)} {{\boldsymbol {V'}}}_K^{\left(1\right)} \end{bmatrix} \boldsymbol P^{1/2} \tag{29} V=VaVbP1/2=V 1(0)V1(1)00V K(0)VK(1)P1/2(29)
其中, P 1 / 2 P^{1/2} P1/2是功率分配矩阵。

5. MMSE预编码

产生噪声放大问题的原因:ZF,RZF,GZI以及BD预编码在一定程度上都受到噪声放大问题的影响,其主要原因是在求解预编码矩阵的过程中,主要考虑了如何消除多用户之间干扰,在干扰消除的同时,期望信号的能量也被削减,从而造成噪声放大问题。在实际的多用户MIMO系统中,如果用户之间的空间距离非常接近,或者由于移动设备大小的限制,使得在一个设备上不同接收天线之间的空间距离非常短,都会造成不同天线之间信道的相关性非常强,因而信道矩阵是欠秩的,这时对信道矩阵的求逆就会造成噪声放大问题 ⟹ \Longrightarrow 预编码前先进行解相关预处理(例如SVD分解),降低多用户信道之间的相关性,再对预处理后的等效信道进行MMSE预编码,此时MMSE预编码受噪声放大问题的影响较小。

最小均方误差(MMSE)预编码,综合考虑了用户干扰和信道噪声的问题,通过引入系数 β \beta β,使系统可以将用户接收端的信干噪比最大化,同时尽可能的降低收发信号之间的均方误差,进而促使此方案在环境噪声较大(即信噪比较低)的情况下,也可以获得较好得系统性能。此方案对应的预编码矩阵为:
V = ξ H H ( H H H + β I ) − 1 P 1 / 2 (30) \boldsymbol V=\xi\boldsymbol H^H(\boldsymbol H\boldsymbol H^H+\beta \boldsymbol I)^{-1}\boldsymbol P^{1/2} \tag{30} V=ξHH(HHH+βI)1P1/2(30)
已发表的文献从MMSE预编码和速率的确定性等同角度出发,证明了在完全精确己知信道状态信息的情况下,MMSE预编码等功率分配是最优的。因此,功率分配矩阵的表达形式为 P = I \boldsymbol P=\boldsymbol I P=I,则
V = ξ H H ( H H H + β I ) − 1 (31) \boldsymbol V=\xi\boldsymbol H^H(\boldsymbol H\boldsymbol H^H+\beta \boldsymbol I)^{-1}\tag{31} V=ξHH(HHH+βI)1(31)
当信干噪比最优时, β = K / ρ \beta = K/\rho β=K/ρ,K是用户终端数, ρ \rho ρ表示下行链路信噪比的度量。

同类文章推荐:
大规模MIMO下行链路预编码(1)
大规模MIMO上行多用户检测基础


博主不定期发布【保研/推免、C/C++、5G移动通信、Linux、生活随笔】系列文章,喜欢的朋友【点赞+关注】支持一下吧!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐