欢迎光临散文网 会员登陆 & 注册

MIMO 系统的 SVD 预编码浅析

2022-09-02 21:58 作者:乐吧的数学  | 我要投稿

MIMO 系统中,如果发射天线多于接收天线,那么我们不能做到每根发射天线都发射一个有效数据,例如 三发两收的情况,我们不能同时发送三个数据出去。在前面几篇文章和视频中有做详细介绍。

录制的视频:https://www.bilibili.com/video/BV17e4y1h7jY/

这篇文章的目的,是如何安排在三个发射天线上发送的数据?使得两根接收天线能接收到两个有效数据?当然,这个可以很自然地扩展到更多的发射天线,前提是接收天线数量少于发送天线数量。

对本篇文章的理解,需要简单的线性代数的知识,包括矩阵乘法,正交向量,奇异值分解(SVD),线性空间。看本篇文章不需要看前面的几篇文章,当然,先看看前面几篇文章,会有更深的理解。

主要以三发两收为例进行讲解,因为三维空间和二维空间是我们容易想象和理解的空间。

系统的示意图如下:


在下面这个文章中,我们讨论了估计发送数据的方法:

MIMO初步(二)如何估计发送的数据


前面文章中提到的发送数据的方式,看起来很怪异,结构化不是很好,第一时刻发送三个新数据,第二时刻只发送一个新数据,看起来不是很均匀地发送有效数据。那我们能否做到在每个时刻都是发送两个新数据呢?但是,有三根发射天线,那怎么发的,这两个新数据通过哪个或者哪些天线发呢?

这就是我们今天要讲的,通过 SVD 分解,来做 x1 和 x2 的线性组合。

从这里开始,我们对有效数据的发送,引入新的记号,即我们要发送的有效数据 记为 c1 和 c2,通过三根天线打出去的信号数据,记为 x1,x2 和 x3.

信道的系数矩阵,我们记为:

W%20%3D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20w_%7B11%7D%26%20w_%7B21%7D%20%26%20w_%7B31%7D%20%5C%5C%0A%20%20w_%7B12%7D%26%20%20w_%7B22%7D%20%26%20w_%7B32%7D%0A%5Cend%7Bbmatrix%7D


则接收到的数据,我们记为 y1, y2, 暂时先不考虑噪声的干扰,则:

Y%20%3D%20W%20X


即:

%5Cbegin%7Bbmatrix%7D%0A%20%20y_1%20%5C%5C%0A%20%20y_2%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20w_%7B11%7D%26%20w_%7B21%7D%20%26%20w_%7B31%7D%20%5C%5C%0A%20%20w_%7B12%7D%26%20%20w_%7B22%7D%20%26%20w_%7B32%7D%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20x_1%20%5C%5C%0A%20%20x_2%20%5C%5C%0A%20%20x_3%0A%5Cend%7Bbmatrix%7D


线性代数的基本知识告诉我们,信道系数矩阵 W 可以做 奇异值分解(SVD - Singular Value Decomposition):

W%20%3D%20USV%5EH


其中 U 是 2x2 的酉矩阵(单位正交的复数矩阵,行向量间两两正交,列向量间两两正交,列向量的模长为 1),V 是 3x3 的酉矩阵,S 是 2x3 的实数对角矩阵,且只有对角线上的元素才可能不为 0 ,且大于等于 0.

酉矩阵(或者对应实数情况下的单位正交矩阵,后面就都用酉矩阵来说明)的几何意义,是对向量的刚性旋转,不改变向量的长度,只是改变向量的方向。 则 V%5EH 矩阵,可以认为是一个旋转矩阵。

Y%20%3D%20W%20X%20%3DUSV%5EHX%20%20%5Cquad%20%5Cquad%20----%20%5Cquad%20%E5%85%AC%E5%BC%8F(1)


我们来看上面公式 (1) 中:

V%5EHX


对于酉矩阵(或单位正交矩阵),作用在一个向量上,就是对向量做了旋转,由于 V%5EHV%3DI , 所以, V  和 %20V%5EH 互为逆旋转。

三发两收中,V 是一个 3x3 的矩阵,所以,可以理解为在三维空间中对一个向量 X 做旋转。

假如发送的有效数据是 c1 和 c2,我们构造一个向量:

C%20%3D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%20%5C%5C%0A%20%200%0A%5Cend%7Bbmatrix%7D


令:
X = VC

相当于对 C 做了一个旋转,那么对 X 再做一个 V 的逆旋转,即乘以 %20V%5EH,我们就又可以得到 C:

V%5EH%20X%20%3D%20V%5EH(VC)%20%3D%20(V%5EHV)C%20%3D%20C

至此,我们可以看到,信道系数矩阵做了 SVD 分解之后,本来是 一步作用在接收向量 X上的,但是,我们可以视为分三步按顺序先后作用在 X上



作用完 VH 之后,我们已经得到了 C,但是,后面两步的效果,需要在接收端做一次逆左右,即






这是从数学公式的推导上,我们可以得到这个过程。

我们从空间几何的角度,再重新理解一下上面的过程。


我们把

%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D



这是一个二维空间中的向量,我们把这个二维空间作为一个平面,再增加一维,构成三维空间,新增加的一维与当前这个二维空间平面正交,则在三维空间中,坐标为:

C%20%3D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%20%5C%5C%0A%20%200%0A%5Cend%7Bbmatrix%7D


我们用  V  来在三维空间中做一个旋转,得到 X.

也可以这样理解,以三维空间中v_1%2Cv_2 两个向量构成的平面,用这两个向量的线性组合,生成一个新的三维空间中的向量  X,

而 V%5EH 作用在 X 上,相当于把 v_1%2Cv_2 两个向量构成的平面 旋转到两个轴构成的平面上,让第三个轴的坐标 为 0. 本来,到这里我们已经拿到了原始的数据。但是, H 中后面两个部分,相当于在这个二维平面上对 二维向量做了拉伸和旋转的动作,所以, 我们还要做一下逆拉伸和逆旋转的动作,只是这次的逆旋转是用 V%5EH




%0AU%20%3D%20%5Bu_1%2C%20u_2%2Cu_3%5D%20%20%5C%5C%20%5Cquad%20%5C%5C%0AS%20%3D%20%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%26%26%200%5C%5C%20%0A%20%200%20%26%26%20%5Clambda_2%20%20%26%26%200%5C%5C%0A%5Cend%7Bbmatrix%7D%20%5C%5C%20%20%5Cquad%20%5C%5C%0AV%20%3D%20%5Bv_1%2C%20v_2%2Cv_3%5D%20%20%5C%5C


W%20%3D%20USV%5EH


由于 C 中第三个坐标为 0,

C%20%3D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%20%5C%5C%0A%20%200%0A%5Cend%7Bbmatrix%7D


所以

X%3DVC%20%3D%20%5Bv_1%2Cv_2%5D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D


由于 S 的第三列为 0,所以

W%20%3D%20U%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20v_1%5EH%20%5C%5C%0A%20%20v_2%5EH%0A%5Cend%7Bbmatrix%7D
所以

%0AY%3D%20WX%20%3DU%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20v_1%5EH%20%5C%5C%0A%20%20v_2%5EH%0A%5Cend%7Bbmatrix%7D%0A%5Bv_1%2Cv_2%5D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D%0A%3D%0AU%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D%0A%5C%5C%0A%3D%5Bu_1%2Cu_2%5D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D



这就是我们接收的数据,因此
%0AS%5E%7B-1%7DU%5EH%20Y%20%3D%5Cbegin%7Bbmatrix%7D%0A%20%20%5Cfrac%7B1%7D%7B%5Clambda_1%7D%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Cfrac%7B1%7D%7B%5Clambda_2%7D%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20u_1%5EH%20%5C%5C%0A%20%20u_2%5EH%0A%5Cend%7Bbmatrix%7D%0A%5Bu_1%2Cu_2%5D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D%0A%3D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D

如果我们对

X%3DVC%20%3D%20%5Bv_1%2Cv_2%5D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D


不使用 v_1%2C%20v_2 ,而是使用其它的一个基(由另外两个单位正交向量构成的一个基),那会怎么样?假如我们用 %5Cbeta_1%2C%5Cbeta_2

%0AY%3D%20WX%20%3DU%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%26%26%200%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%26%26%200%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20v_1%5EH%20%5C%5C%0A%20%20v_2%5EH%20%5C%5C%0A%20%20v_3%5EH%0A%5Cend%7Bbmatrix%7D%0A%5B%5Cbeta_1%2C%5Cbeta_2%5D%5Cbegin%7Bbmatrix%7D%0A%20%20c_1%20%5C%5C%0A%20%20c_2%0A%5Cend%7Bbmatrix%7D%20%5C%5C%0A%3DU%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%26%26%200%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%26%26%200%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20v_1%5EH%20%5C%5C%0A%20%20v_2%5EH%20%5C%5C%0A%20%20v_3%5EH%0A%5Cend%7Bbmatrix%7D%0A%0A%20%20(%5Cbeta_1%20c_1%20%2B%20%5Cbeta_2%20c_2)%0A%20%5C%5C%0A%20%3D%0A%20U%5Cbegin%7Bbmatrix%7D%0A%20%20%5Clambda_1%20%26%26%200%20%26%26%200%5C%5C%0A%20%200%20%26%26%20%5Clambda_2%20%26%26%200%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A%20%20v_1%5EH(%5Cbeta_1%20c_1%20%2B%20%5Cbeta_2%20c_2)%20%5C%5C%0A%20%20v_2%5EH(%5Cbeta_1%20c_1%20%2B%20%5Cbeta_2%20c_2)%20%5C%5C%0A%20%20v_3%5EH(%5Cbeta_1%20c_1%20%2B%20%5Cbeta_2%20c_2)%0A%5Cend%7Bbmatrix%7D


则再往下乘的时候,会丢弃掉 v_3%5EH(%5Cbeta_1%20c_1%20%2B%20%5Cbeta_2%20c_2), 会丢失有用信息;另外, c_1 和 c_2 会相互影响,就不容分离开。



举个例子:



Y1= [ 5.00000000e-01, -6.00000000e+00,  0]

Y2= [ 0.99004132, -0.04847483]

Y = [-0.49681329,  0.85773434]

C1= [ 0.99004132, -0.04847483]

C2 = [ 0.5, -6. ,  0. ]

CC = [ 0.5, -6.  ]


可以看到, 信号 X 在通过信道的第一个阶段 (V%5EH) 后,已经变成 Y1,其中第三个轴的坐标为 0,表明这个 Y1 在另外两个轴构成的平面上。再经过拉伸和旋转,变成了接收天线拿到的数据 Y.

Y 在二维平面上,经过逆旋转 (U%5EH)和逆拉伸( 乘以 V 的伪逆矩阵),得到三维空间中的坐标 C2,但是,第三轴坐标是 0. 删除第三个坐标,我们拿到的就是发送的数据 CC = C.

==============================谢谢您阅读到这里=======================

说点题外话,塑料垃圾流到海洋和河流中,很多动物误食塑料后活活饿死,所以,还请把塑料垃圾妥善丢到垃圾桶内,当然,最好减少塑料的使用。


MIMO 系统的 SVD 预编码浅析的评论 (共 条)

分享到微博请遵守国家法律