混合波束成形| MIMO系统的DFT码本

前言

在MIMO信道估计等问题中, 往往需要使用码本, 而最常用的就是DFT码本。 本文介绍了为何DFT码本可以如此适用于作为信道估计的码本。首先会从ULA 阵列天线入手, 然后拓展到UPA 平面天线。

DFT 矩阵

众所周知, 离散傅里叶变换(DFT)可以写为:
X [ k ] = ∑ n = 0 N − 1 x [ n ] e − j ( 2 π / N ) k n ,  其中  ( 0 ≤ k ≤ N − 1 ) (1) X[k]=\sum_{n=0}^{N-1} x[n] e^{-j(2 \pi / N) k n}, \text { 其中 }(0 \leq k \leq N-1) \tag{1} X[k]=n=0N1x[n]ej(2π/N)kn, 其中 (0kN1)(1)
DFT的相关资料很多, 这里不多赘述。 X [ k ] X[k] X[k] 代表的是频域第 k k k 个频点的值(响应), x [ n ] x[n] x[n] 是 时域的 第 n n n个信号, N N N 是总采样数。
我们可以有下式的DFT矩阵 F \mathbf{F} F

F = ( 1 1 1 ⋯ 1 1 ξ ξ 2 ⋯ ξ n − 1 1 ξ 2 ξ 4 ⋯ ξ 2 ( n − 1 ) ⋮ ⋮ ⋮ ⋱ ⋮ 1 ξ n − 1 ξ 2 ( n − 1 ) ⋯ ξ ( n − 1 ) ( n − 1 ) ) ⋅ (2) \mathbf{F}=\left(\begin{array}{ccccc} 1 & 1 & 1 & \cdots & 1 \\ 1 & \xi & \xi^{2} & \cdots & \xi^{n-1} \\ 1 & \xi^{2} & \xi^{4} & \cdots & \xi^{2(n-1)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & \xi^{n-1} & \xi^{2(n-1)} & \cdots & \xi^{(n-1)(n-1)} \end{array}\right) \cdot \tag{2} F=11111ξξ2ξn11ξ2ξ4ξ2(n1)1ξn1ξ2(n1)ξ(n1)(n1)(2)
其中 ξ = e − j ( 2 π / N ) \xi = e^{-j(2 \pi / N)} ξ=ej(2π/N).
由(1)可知:
x f r e q = F x t \mathbf{x}_{freq} = \mathbf{F}\mathbf{x}_{t} xfreq=Fxt
其中, x t = [ x [ 0 ] , … , x [ N − 1 ] ] T \mathbf{x}_{t} = [x[0], \dots, x[N-1]]^T xt=[x[0],,x[N1]]T是时域信号, x f r e q = [ X [ 0 ] , … , X [ N − 1 ] ] T \mathbf{x}_{freq}=[X[0], \dots, X[N-1]]^T xfreq=[X[0],,X[N1]]T是频域信号。 简而言之, 对时域信号左乘DFT矩阵, 即可得到频域信号。
注意: F \mathbf{F} F是正交矩阵, 即 F F H = F H F = N I \mathbf{F}\mathbf{F}^H=\mathbf{F}^H\mathbf{F}=N\mathbf{I} FFH=FHF=NI. 这个可以通过等比数列求和公式得到。

ULA的响应向量

对于共 N N N个天线, 天线间隔为半波长的阵列, 其响应向量可以表示为:
a U L A ( ϕ ) = 1 N [ 1 , e j π sin ⁡ ( ϕ ) , … , e j π ( N − 1 ) sin ⁡ ( ϕ ) ] T \mathbf{a}_{\mathrm{ULA}}(\phi)=\frac{1}{\sqrt{N}}\left[1, e^{j \pi \sin (\phi)}, \ldots, e^{j \pi(N-1) \sin (\phi)}\right]^{T} aULA(ϕ)=N 1[1,ejπsin(ϕ),,ejπ(N1)sin(ϕ)]T
响应向量为 入射角度 ϕ \phi ϕ 的函数。

DFT 码本

那么, 我们可以把 N N N 个 不同入射角度对应的 响应向量 合写在一个矩阵中, 如下:

A = ( 1 1 1 ⋯ 1 e j π sin ⁡ ( ϕ 0 ) e j π sin ⁡ ( ϕ 1 ) e j π sin ⁡ ( ϕ 2 ) ⋯ e j π sin ⁡ ( ϕ N − 1 ) e j π 2 sin ⁡ ( ϕ 0 ) e j π 2 sin ⁡ ( ϕ 1 ) e j π 2 sin ⁡ ( ϕ 2 ) ⋯ e j π 2 sin ⁡ ( ϕ N − 1 ) ⋮ ⋮ ⋮ ⋱ ⋮ e j π ( N − 1 ) sin ⁡ ( ϕ 0 ) e j π ( N − 1 ) sin ⁡ ( ϕ 1 ) e j π ( N − 1 ) sin ⁡ ( ϕ 2 ) ⋯ e j π ( N − 1 ) sin ⁡ ( ϕ N − 1 ) ) ⋅ (3) \mathbf{A}=\left(\begin{array}{ccccc} 1 & 1 & 1 & \cdots & 1 \\ e^{j \pi \sin (\phi_0)} & e^{j \pi \sin (\phi_1)} & e^{j \pi \sin (\phi_2)} & \cdots & e^{j \pi \sin (\phi_{N-1})} \\ e^{j \pi 2\sin (\phi_0)} & e^{j \pi 2\sin (\phi_1)} & e^{j \pi 2\sin (\phi_2)} & \cdots & e^{j \pi 2\sin (\phi_{N-1})} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ e^{j \pi (N-1)\sin (\phi_0)} & e^{j \pi (N-1)\sin (\phi_1)} & e^{j \pi (N-1)\sin (\phi_2)} & \cdots & e^{j \pi (N-1)\sin (\phi_{N-1})} \end{array}\right) \cdot \tag{3} A=1ejπsin(ϕ0)ejπ2sin(ϕ0)ejπ(N1)sin(ϕ0)1ejπsin(ϕ1)ejπ2sin(ϕ1)ejπ(N1)sin(ϕ1)1ejπsin(ϕ2)ejπ2sin(ϕ2)ejπ(N1)sin(ϕ2)1ejπsin(ϕN1)ejπ2sin(ϕN1)ejπ(N1)sin(ϕN1)(3)

如果我们令 [ sin ⁡ ( ϕ 0 ) , sin ⁡ ( ϕ 1 ) , … , sin ⁡ ( ϕ N − 1 ) ] = [ 0 , − 2 N , … , − 2 ( N − 1 ) N ] [\sin(\phi_0), \sin(\phi_1), \dots, \sin(\phi_{N-1})] = [0, -\frac{2}{N}, \dots, -\frac{2(N-1)}{N}] [sin(ϕ0),sin(ϕ1),,sin(ϕN1)]=[0,N2,,N2(N1)], 那么比较(2) 和 (3), 可知 A = F \mathbf{A} = \mathbf{F} A=F.但需要注意: sin ⁡ ( ϕ ) ∈ [ − 1 , 1 ] \sin(\phi)\in[-1, 1] sin(ϕ)[1,1], 所以有些值是取不到的。 同时也有: e j π 2 a = e j π ( 2 a + 2 ) e^{j\pi 2a} = e^{j\pi (2a+2)} ejπ2a=ejπ(2a+2).
因此,我们应该令, [ sin ⁡ ( ϕ 0 ) , sin ⁡ ( ϕ 1 ) , … , sin ⁡ ( ϕ N − 1 ) ] = [ 0 , − 2 N , … , − N N , − N + 2 N + 2 , … , − 2 ( N − 1 ) N + 2 ] [\sin(\phi_0), \sin(\phi_1), \dots, \sin(\phi_{N-1})] = [0, -\frac{2}{N}, \dots, -\frac{N}{N}, -\frac{N+2}{N} + 2, \dots, -\frac{2(N-1)}{N} +2] [sin(ϕ0),sin(ϕ1),,sin(ϕN1)]=[0,N2,,NN,NN+2+2,,N2(N1)+2], 此时 A = F \mathbf{A} = \mathbf{F} A=F 仍成立。 同时, 我们可以倒推出所有 ϕ n \phi_n ϕn

这里, A \mathbf{A} A 就是基于 DFT矩阵得到的 DFT码本。 A \mathbf{A} A 的每一列 代表了 一个入射角度 的 对应天线响应。 其最大的特点是, 每一个入射角度的 天线响应之间互相正交 (DFT矩阵的性质)。码本覆盖了空间0~180度的范围(对应sin值从-1到1),分辨力(最小间隔)为 sin ⁡ ( 2 N ) \sin(\frac{2}{N}) sin(N2).

下面是简单的matlab代码实现一个DFT码本 A \mathbf{A} A, N为阵列天线数:

N = 8;
% columns
t = 0 : -2 / N : -2 * (N-1) / N;
t((t<-1)) = t((t<-1)) + 2;
% rows
g = 0 :(N-1);
A = exp(1j * pi * g' * t);

作为对比, DFT的码本生成代码为:

% DFT
for i = 1 :N
    for j = 1 : N
        F(i,j) = exp(-1j * 2 * pi * (i-1) * (j-1) / N);
    end
end

可以发现 A = F \mathbf{A}=\mathbf{F} A=F
很容易验证, A \mathbf{A} A的每一列(代表一个入射方向的天线响应)都是互相正交的。 这也是DFT码本最大的意义。 作为对比, 大家可以试试, 同样是生成N个码字(对应N个入射角度)的码本, 如果我们只是简单的将空间0-180度均匀分成N份,如第一个码字是入射角度为0度的天线响应, 第二个码字为 180 N \frac{180}{N} N180度的天线响应, 这样得到的码本,码字间是不会互相正交的。 正交码本的好处有很多, 本文中不赘述了。 简单总结一下:DFT码本相当于将0-180度的空间, 对应到sin值-1到1的空间。 再将-1到1按等间隔 2 N \frac{2}{N} N2划分N个码字, 即可得到正交的码本。 当然,由于三角函数的性质, 对cos值这样划分也有类似的结论,不再赘述。

使用码本画出空间方向图

通过上面的分析, 我们知道, 其实想生成一个正交码本的核心在于相邻码字间的sin值间隔为 2 N \frac{2}{N} N2即可, 不要求从哪个开始,哪个结束。 因此我们可以把 A \mathbf{A} A中的列按从sin值-1到1从小到大排序如下, 此时 A \mathbf{A} A仍是正交矩阵:

N = 64;
% columns
t = -1 : 2 / N : (N-1) / N;
% rows
g = 0 :(N-1);
A = exp(1j * pi * g' * t);

这里 t t t中就不会出现超过-1或1的情况, 且对应的弧度制是从小到大顺序排列的, 这样的 A \mathbf{A} A更合适。

假设我们的波束成形(不管是发送或是接收)向量为 W ∈ C N × 1 \mathbf{W}\in \mathbb{C}^{N \times 1} WCN×1,其对应的空间方向图(在空间每个角度上的能量响应)可以表示为:
r = ∥ W H A ∥ \mathbf{r} = \|\mathbf{W}^H\mathbf{A}\| r=WHA,
r k \mathbf{r}_k rk对应的是 A \mathbf{A} A的第 k k k列, 代表的方向是
ϕ = sin ⁡ − 1 ( 2 ( k − 1 ) N − 1 ) \phi =\sin^{-1}(\frac{2(k -1) }{N}-1) ϕ=sin1(N2(k1)1)
写个简单的小程序验证一下:

N = 64;
% columns
t = -1 : 2 / N : (N-1) / N;
% rows
g = 0 :(N-1);
A = exp(1j * pi * g' * t);
idx =  0 : (N-1); 
phi = 50 / 180 * pi;
W = 1 / sqrt(N) * exp(1j * pi * idx.' * sin(phi));
r = abs(W' * A);
xlabel = asin(t) / pi * 180;
plot(xlabel, r)

这里我们用对准50度方向的波束成形向量, 画出其对应的空间方向图, 如下:
在这里插入图片描述
可以看到, 确实在50度的时候, 响应值是最大的, 符合预期。

UPA天线响应

除了ULA, 实际中平面天线阵列(UPA)的应用更为广泛。 UPA的天线响应则与两个参数相关: 入射水平角 θ \theta θ 和 仰角 ϕ \phi ϕ. UPA的响应公式可以表示为:
a U P A ( ϕ , θ ) = 1 N [ 1 , … , e j π ( q sin ⁡ ( ϕ ) cos ⁡ ( θ ) + p cos ⁡ ( ϕ ) ) … , e j π ( ( Q − 1 ) sin ⁡ ( ϕ ) cos ⁡ ( θ ) + ( P − 1 ) cos ⁡ ( ϕ ) ) ] T (4) \begin{aligned} \mathbf{a}_{\mathrm{UPA}}(\phi, \theta)=\frac{1}{\sqrt{N}}\left[1, \ldots, e^{j \pi(q \sin (\phi) \cos(\theta)+p \cos (\phi))}\right. \left.\ldots, e^{j \pi((Q-1) \sin (\phi) \cos(\theta)+(P-1) \cos (\phi))}\right]^{T} \end{aligned} \tag{4} aUPA(ϕ,θ)=N 1[1,,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ)),ejπ((Q1)sin(ϕ)cos(θ)+(P1)cos(ϕ))]T(4)
P P P Q Q Q 代表了UPA共有 P P P行, Q Q Q列天线。 对应的UPA建模如图:
在这里插入图片描述
图中, 我们以中心的接收端UPA的左下角的天线作为第一行第一列元素。 θ \theta θ发送UPA(图中右下角的小UPA)投影到 x y xy xy平面后与 x x x轴的夹角, ϕ \phi ϕ是与 z z z轴负半轴的夹角。 简单理解这个响应公式:由于相位与距离成反比。 那么 p p p行的天线相对于第一行的天线, 与发射UPA的距离是增加的, 那么相位就是减小的。 如果第一行第一列天线的相位我们归一化为1作为初始相位, 那么第 p p p行天线的相位就是一个负值。 而信道 H \mathbf{H} H通常被我们写为 H = a r a t H \mathbf{H} = \mathbf{a}_r\mathbf{a}_t^H H=aratH, 其中 a t \mathbf{a}_t at就是我们想求的UPA天线响应。这里有点绕。 需要注意的是, (4)式是一个正确UPA响应的表达式。 但是对于不同的建模方式, 如, 以左上角第一个元素为第一行第一列进行建模, 那么结果就不一样了。 包括对 θ \theta θ ϕ \phi ϕ的不同定义,也会使最后的建模结果有所不同。但万变不离齐总, 核心都是基于 相位与距离成反比这一点上。

因为我在项目里用的是(4)式的响应, 下面也沿用这个响应表达式。 需要指出, 后续的DFT码本推导适用于各种不同建模下的响应, 只需要简单的变量代换即可。

二维DFT

二维DFT的公式如下:
F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − j 2 π ( u x M + v y N ) (5) F(u, v)=\sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) e^{-j 2 \pi\left(\frac{u x}{M}+\frac{v y}{N}\right)} \tag{5} F(u,v)=x=0M1y=0N1f(x,y)ej2π(Mux+Nvy)(5)
其中 u = 0 , … , M − 1 u=0, \dots, M-1 u=0,,M1, v = 0 , … , N − 1 v=0, \dots, N-1 v=0,,N1.

G = [ f ( 0 , 0 ) f ( 0 , 1 ) ⋯ f ( 0 , N − 1 ) f ( 1 , 0 ) f ( 1 , 1 ) ⋯ f ( 1 , N − 1 ) ⋮ ⋮ ⋯ ⋮ f ( M − 1 , 0 ) f ( M − 1 , 1 ) ⋯ f ( M − 1 , N − 1 ) ] \mathbf{G}=\left[\begin{array}{cccc} f(0,0) & f(0,1) & \cdots & f(0, N-1) \\ f(1,0) & f(1,1) & \cdots & f(1, N-1) \\ \vdots & \vdots & \cdots & \vdots \\ f(M-1,0) & f(M-1,1) & \cdots & f(M-1, N-1) \end{array}\right] G=f(0,0)f(1,0)f(M1,0)f(0,1)f(1,1)f(M1,1)f(0,N1)f(1,N1)f(M1,N1)
可将其列化为 g = v e c ( G ) \mathbf{g} = \mathrm{vec}(\mathbf{G}) g=vec(G). 同时也可将 F \mathbf{F} F列化为 f \mathbf{f} f, 那么存在二维DFT矩阵 T \mathbf{T} T, 使得 f = T g \mathbf{f} = \mathbf{T}\mathbf{g} f=Tg。根据(5)式, 可以得到 T \mathbf{T} T的第 k k k行第 j j j列的元素如下: ( k k k对应于 f \mathbf{f} f的第 k k k个元素, 也就是 F \mathbf{F} F的第 u u u行第 v v v列, 即 k = u + ( v − 1 ) ∗ M k=u + (v-1) * M k=u+(v1)M; 第 j j j列对应于 g \mathbf{g} g的第 j j j个元素, 也就是 G \mathbf{G} G的第 x x x行第 y y y列, j = x + ( y − 1 ) ∗ M j = x + (y-1) * M j=x+(y1M
T ( k , j ) = e − j 2 π ( ( u − 1 ) ( x − 1 ) M + ( v − 1 ) ( y − 1 ) N ) \mathbf{T}(k, j)=e^{-j 2 \pi\left(\frac{(u-1)(x-1)}{M}+\frac{(v-1)(y-1)}{N}\right)} T(k,j)=ej2π(M(u1)(x1)+N(v1)(y1))
其实应该从0开始算较好。 这里的写法只是避免了第0行的说法。 下面是实现的代码:

%2D DFT
M = 16;
N = 8;
K = M * N;
T = zeros(K, K);
for k = 0 : K-1
    v = floor(k / M);
    u = k - v * M;
    for j = 0 : K-1
        y = floor(j / M);
        x = j - y * M;
        T(k + 1, j + 1) = exp(-1j * 2 * pi * (u * x/ M + v * y / N));
    end
end

类似一维DFT矩阵, T \mathbf{T} T矩阵有两个性质:

  • k k k行和第 k k k列完全相等。
  • 列与列,行与行之间均正交。

而第二个性质, 就是我们用来设计正交码本的思路。

二维DFT对应的UPA码本

回顾一下两个式子, 二维DFT:
T ( k , j ) = e − j 2 π ( u x M + v y N ) \mathbf{T}(k, j) = e^{-j 2 \pi\left(\frac{u x}{M}+\frac{v y}{N}\right)} T(k,j)=ej2π(Mux+Nvy)
UPA的响应式子:
a U P A ( ϕ , θ ) = 1 N [ 1 , … , e j π ( q sin ⁡ ( ϕ ) cos ⁡ ( θ ) + p cos ⁡ ( ϕ ) ) … , e j π ( ( Q − 1 ) sin ⁡ ( ϕ ) cos ⁡ ( θ ) + ( P − 1 ) cos ⁡ ( ϕ ) ) ] T \begin{aligned} \mathbf{a}_{\mathrm{UPA}}(\phi, \theta)=\frac{1}{\sqrt{N}}\left[1, \ldots, e^{j\pi(q \sin (\phi) \cos(\theta)+p \cos (\phi))}\right. \left.\ldots, e^{j \pi((Q-1) \sin (\phi) \cos(\theta)+(P-1) \cos (\phi))}\right]^{T} \end{aligned} aUPA(ϕ,θ)=N 1[1,,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ)),ejπ((Q1)sin(ϕ)cos(θ)+(P1)cos(ϕ))]T
通过变量代换,可以有:
e − j 2 π ( u x M + v y N ) = e − j π ( u 2 x M + v 2 y N ) = e − j π ( p 2 x M + q 2 y N ) e^{-j 2 \pi\left(\frac{u x}{M}+\frac{v y}{N}\right)} = e^{-j \pi(u\frac{2x}{M} + v\frac{2y}{N})} = e^{-j \pi(p\frac{2x}{M} + q\frac{2y}{N})} ej2π(Mux+Nvy)=ejπ(uM2x+vN2y)=ejπ(pM2x+qN2y),
只需令 cos ⁡ ( ϕ ) = − 2 x M \cos (\phi)=-\frac{2x}{M} cos(ϕ)=M2x, sin ⁡ ( ϕ ) cos ⁡ ( θ ) = − 2 y N \sin (\phi) \cos(\theta)=-\frac{2y}{N} sin(ϕ)cos(θ)=N2y,通过改变 x , y x,y x,y的值, 我们就可以得到多个对应不同 θ \theta θ ϕ \phi ϕ的码字, 且互相之间是正交的。 同样的, 我们有 cos ⁡ ( ϕ ) ∈ [ − 1 , 1 ] \cos(\phi)\in [-1, 1] cos(ϕ)[1,1] sin ⁡ ( ϕ ) cos ⁡ ( θ ) ∈ [ − 1 , 1 ] \sin(\phi)\cos(\theta)\in [-1, 1] sin(ϕ)cos(θ)[1,1], 当 2 x M > 1 \frac{2x}{M} > 1 M2x>1 2 y N > 1 \frac{2y}{N} > 1 N2y>1 时, cos ⁡ ( ϕ ) = − 2 x M + 2 \cos (\phi)=-\frac{2x}{M} + 2 cos(ϕ)=M2x+2 sin ⁡ ( ϕ ) cos ⁡ ( θ ) = − 2 y N + 2 \sin (\phi) \cos(\theta)=-\frac{2y}{N} + 2 sin(ϕ)cos(θ)=N2y+2

假设我们现在有波束成形矩阵 W \mathbf{W} W, 想获取其在各个角度上的响应, 只需要计算:
r = ∥ W H T ∥ \mathbf{r} = \|\mathbf{W}^H\mathbf{T}\| r=WHT
(注意, T T = T \mathbf{T}^T=\mathbf{T} TT=T
r k \mathbf{r}_k rk代表了第 k k k个码字(方向)上的响应, 可通过 k k k算出其对应的 x x x y y y值。如, k = 2 k=2 k=2 就代表 x = 2 x=2 x=2, y = 0 y=0 y=0 (所有数从0开始计算)。
那么:
ϕ = { cos ⁡ − 1 ( − 2 x M ) , 2 x M ≤ 1 cos ⁡ − 1 ( − 2 x M + 2 ) , 2 x M > 1 \phi = \left\{\begin{array}{c} \cos^{-1}\left(-\frac{2 x}{M}\right) ,\frac{2 x}{M}\le 1\\ \cos^{-1}\left(-\frac{2 x}{M}+2\right) ,\frac{2 x}{M}> 1 \end{array}\right. ϕ={cos1(M2x),M2x1cos1(M2x+2),M2x>1

θ = { cos ⁡ − 1 ( − 2 y N sin ⁡ ϕ ) , 2 y N ≤ 1 cos ⁡ − 1 ( − 2 y N + 2 sin ⁡ ϕ ) , 2 y N > 1 \theta = \left\{\begin{array}{c} \cos^{-1}\left(-\frac{2 y}{N\sin\phi}\right) ,\frac{2 y}{N}\le 1\\ \cos^{-1}\left(\frac{-\frac{2 y}{N}+2}{\sin\phi}\right) ,\frac{2 y}{N}> 1 \end{array}\right. θ=cos1(Nsinϕ2y),N2y1cos1(sinϕN2y+2),N2y>1

需要注意的是, 在求 θ \theta θ的时候, 某个码字有一定概率是不对应一个有意义的 θ \theta θ。因为 2 y N sin ⁡ ϕ > 1 \frac{2 y}{N\sin\phi} > 1 Nsinϕ2y>1时, θ \theta θ是没有意义的。 但为了正交性, 我们没有舍弃这些无意义的码字。

类似ULA, 我们验证下方向图,由于二维DFT不好画图了, 我们直接找出最大能量点对应的 θ \theta θ ϕ \phi ϕ看是否与我们使用的波束成形向量的角度一致:

M = 64;
N = 64;
K = M * N;
T = zeros(K, K);
for k = 0 : K-1
    v = floor(k / M);
    u = k - v * M;
    for j = 0 : K-1
        y = floor(j / M);
        x = j - y * M;
        T(k + 1, j + 1) = exp(-1j * 2 * pi * (u * x/ M + v * y / N));
    end
end

phi = 50 / 180 * pi;
theta = 40 / 180 * pi;
for i = 1 : M
    for j = 1 : N
        W(i, j) = exp(1j * pi * (j * sin(phi) * cos(theta) + i * cos(phi)));
    end
end

w = W(:);
r = abs(w' * T);
[~, k] = max(r);
k = k - 1; %从0开始计算
y = floor(k / M);
x = k - y * M;
tmp = 2 * x / M;
if tmp > 1
    tmp = tmp -2;
end
est_phi = acos(-tmp) / pi * 180;
tmp = 2 * y / M;
if tmp > 1
    tmp = tmp -2;
end
est_theta = acos(-tmp / sin(phi)) / pi * 180;

如上,我们使用了40度的 θ \theta θ和50度的 ϕ \phi ϕ, 最后最大的能量所对应的方向的角度分别是39.18和48.95,可以认为基本是对应上的。

类似ULA,我们也可以自主调换矩阵的列,只要保证间隔分别是 2 M \frac{2}{M} M2 1 N \frac{1}{N} N1即可了。
以下为示例代码:

Aset = [];
for m = -1 : 2/N : (N-1)/N
    for n = -1 : 2/M : (M-1)/M
        A = zeros(M, N);
        for p = 1 : M
            for q = 1 : N
                A(p, q) = exp(1j*pi*(q-1)*m+1j*pi*(p-1)*n);
            end
        end
        a = A(:);
        Aset = [Aset, a];
    end
end

寻找最大响应值对应的角度:

[~, idx] = max(S);
idx = idx - 1; % 从0开始算
a = mod(idx, M);
b = floor(idx / M);
est_phi = acos(-1 + a * 2 / M) / pi * 180;
tmp = -1 + b * 2 / N;
est_theta = acos(tmp / sin(phi)) / pi * 180;

正交性证明

在我看来, DFT其实和正交码本的设计本身没有关系。 事实上, 我们的目的只是为了设计出的码字能尽量均匀地分割整个角度空间, 并彼此之间互相正交。 而类似DFT的形式, 可以做到这一点。 这一节我们脱离DFT, 仅从ULA, UPA的天线响应本身, 来设计正交的码本。

ULA的正交码字

ULA的天线响应:
a U L A ( ϕ ) = 1 N [ 1 , e j π sin ⁡ ( ϕ ) , … , e j π ( N − 1 ) sin ⁡ ( ϕ ) ] T \mathbf{a}_{\mathrm{ULA}}(\phi)=\frac{1}{\sqrt{N}}\left[1, e^{j \pi \sin (\phi)}, \ldots, e^{j \pi(N-1) \sin (\phi)}\right]^{T} aULA(ϕ)=N 1[1,ejπsin(ϕ),,ejπ(N1)sin(ϕ)]T
先假设我们有两个码字,分别为:
a U L A ( ϕ 1 ) = 1 N [ 1 , e j π sin ⁡ ( ϕ 1 ) , … , e j π ( N − 1 ) sin ⁡ ( ϕ 1 ) ] T a U L A ( ϕ 2 ) = 1 N [ 1 , e j π sin ⁡ ( ϕ 2 ) , … , e j π ( N − 1 ) sin ⁡ ( ϕ 2 ) ] T \mathbf{a}_{\mathrm{ULA}}(\phi_1)=\frac{1}{\sqrt{N}}\left[1, e^{j \pi \sin (\phi_1)}, \ldots, e^{j \pi(N-1) \sin (\phi_1)}\right]^{T} \\\mathbf{a}_{\mathrm{ULA}}(\phi_2)=\frac{1}{\sqrt{N}}\left[1, e^{j \pi \sin (\phi_2)}, \ldots, e^{j \pi(N-1) \sin (\phi_2)}\right]^{T} aULA(ϕ1)=N 1[1,ejπsin(ϕ1),,ejπ(N1)sin(ϕ1)]TaULA(ϕ2)=N 1[1,ejπsin(ϕ2),,ejπ(N1)sin(ϕ2)]T

他们的内积可以写为:
a U L A ( ϕ 1 ) H a U L A ( ϕ 2 ) = 1 N Σ i = 0 N − 1 e j π i ( sin ⁡ ( ϕ 1 ) − sin ⁡ ( ϕ 2 ) ) (6) \mathbf{a}_{\mathrm{ULA}}(\phi_1)^H\mathbf{a}_{\mathrm{ULA}}(\phi_2)=\frac{1}{N}\Sigma_{i=0}^{N-1} e^{j \pi i(\sin (\phi_1)-\sin (\phi_2))} \tag{6} aULA(ϕ1)HaULA(ϕ2)=N1Σi=0N1ejπi(sin(ϕ1)sin(ϕ2))(6)
这是一个等比数列求和问题,
而等比数列求和公式为:
S n = a 1 ⋅ 1 − q n 1 − q ( q ≠ 1 ) S_{n}=a_{1} \cdot \frac{1-q^{n}}{1-q} \quad(q \neq 1) Sn=a11q1qn(q=1)
其中, a 1 a_1 a1是首项, 在(6)中就是1, q q q是比例, 也就是 e j π ( sin ⁡ ( ϕ 1 ) − sin ⁡ ( ϕ 2 ) ) e^{j \pi (\sin (\phi_1)-\sin (\phi_2))} ejπ(sin(ϕ1)sin(ϕ2)), n是求和的总项数,也就是 N N N(不是 N − 1 N-1 N1)因此:
a U L A ( ϕ 1 ) H a U L A ( ϕ 2 ) = 1 N 1 − e j π N ( sin ⁡ ( ϕ 1 ) − sin ⁡ ( ϕ 2 ) ) 1 − e j π ( sin ⁡ ( ϕ 1 ) − sin ⁡ ( ϕ 2 ) ) (7) \mathbf{a}_{\mathrm{ULA}}(\phi_1)^H\mathbf{a}_{\mathrm{ULA}}(\phi_2)=\frac{1}{N}\frac{1-e^{j \pi N (\sin (\phi_1)-\sin (\phi_2))}}{1-e^{j \pi (\sin (\phi_1)-\sin (\phi_2))}}\tag{7} aULA(ϕ1)HaULA(ϕ2)=N11ejπ(sin(ϕ1)sin(ϕ2))1ejπN(sin(ϕ1)sin(ϕ2))(7)
由(7)可知, 只要 sin ⁡ ( ϕ 1 ) − sin ⁡ ( ϕ 2 ) = 2 k N , k = 1 , 2 , … \sin (\phi_1)-\sin (\phi_2)=\frac{2k}{N}, k= 1, 2, \dots sin(ϕ1)sin(ϕ2)=N2k,k=1,2,时, (7)的分子就为0, 也就是 a U L A ( ϕ 1 ) H a U L A ( ϕ 2 ) = 0 \mathbf{a}_{\mathrm{ULA}}(\phi_1)^H\mathbf{a}_{\mathrm{ULA}}(\phi_2)=0 aULA(ϕ1)HaULA(ϕ2)=0, 实现了正交。 因此,只要相邻码字的sin值互相间隔 2 N \frac{2}{N} N2, 所有码字就是正交的。

这里提一下, 如果我们以 2 N \frac{2}{N} N2为间隔设计码本, 那么刚好有 N N N个码字, 每个码字的长度为 N N N, 总的码本矩阵 A \mathbf{A} A就是个 N × N N\times N N×N的矩阵。 这个矩阵是个正交矩阵。 但如果以 1 N ( \frac{1}{N}( N1(甚至 0.5 N \frac{0.5}{N} N0.5)为间隔设计呢? 那 A \mathbf{A} A会是个 N × 2 N N\times 2N N×2N的矩阵, 即总共会有 2 N 2N 2N个码字。 这些码字之间就不是完全正交的了。 但这个码本 A \mathbf{A} A却仍然会满足 A A H \mathbf{A}\mathbf{A}^H AAH 是个单位阵。 也就是说码本的行之间仍是正交的, 这个也是可以证明的。

UPA的正交码字

a U P A ( ϕ , θ ) = 1 N [ 1 , … , e j π ( q sin ⁡ ( ϕ ) cos ⁡ ( θ ) + p cos ⁡ ( ϕ ) ) … , e j π ( ( Q − 1 ) sin ⁡ ( ϕ ) cos ⁡ ( θ ) + ( P − 1 ) cos ⁡ ( ϕ ) ) ] T \begin{aligned} \mathbf{a}_{\mathrm{UPA}}(\phi, \theta)=\frac{1}{\sqrt{N}}\left[1, \ldots, e^{j\pi(q \sin (\phi) \cos(\theta)+p \cos (\phi))}\right. \left.\ldots, e^{j \pi((Q-1) \sin (\phi) \cos(\theta)+(P-1) \cos (\phi))}\right]^{T} \end{aligned} aUPA(ϕ,θ)=N 1[1,,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ)),ejπ((Q1)sin(ϕ)cos(θ)+(P1)cos(ϕ))]T
UPA的响应虽然繁琐, 但我们其实只需要求两个码字间的内积。 也就是说, 将两个码字的同位置的元素一一相乘后求和, 而改变求和的顺序并不影响结果。因此, 我们可以把求和排成我们想要的顺序。 比如, 第一个码字对应原UPA第 q q q列的 P P P行元素,与第二个码字的对应原UPA第 q q q列的 P P P行元素进行相乘求和, 结果如下:
S q = e j π q ( sin ⁡ ϕ 1 cos ⁡ θ 1 − sin ⁡ ϕ 2 cos ⁡ θ 2 ) Σ i = 0 P − 1 e j π i ( cos ⁡ ϕ 1 − cos ⁡ ϕ 2 ) (7) S_q = e^{j\pi q( \sin\phi_1 \cos\theta_1- \sin\phi_2 \cos\theta_2)}\Sigma_{i=0}^{P-1} e^{j\pi i(\cos\phi_1-\cos\phi_2)} \tag{7} Sq=ejπq(sinϕ1cosθ1sinϕ2cosθ2)Σi=0P1ejπi(cosϕ1cosϕ2)(7),
因此, 类似ULA的, 只需要cos值以 2 P \frac{2}{P} P2为间隔的话, S q S_q Sq的求和项就为0, 那么 S q S_q Sq就也是0了, 同理类推到其他列。 最后总的内积就是0, 也就是正交了。

这里的推导有什么问题吗? 如果没有问题的话, 为什么我们还需要对前面水平角那部分做一个 2 Q \frac{2}{Q} Q2为间隔的限制呢?
因为这里还忽略了一种情况。 如果是 ϕ 1 = ϕ 2 \phi_1=\phi_2 ϕ1=ϕ2, 而 θ 1 ≠ θ 2 \theta_1 \ne \theta_2 θ1=θ2,这显然也是两个独立的码字,那如何使他们正交呢? 答案很显而意见了, 代入(7), 有:
S q = P e j π q ( sin ⁡ ϕ 1 cos ⁡ θ 1 − sin ⁡ ϕ 2 cos ⁡ θ 2 ) S_q = Pe^{j\pi q( \sin\phi_1 \cos\theta_1- \sin\phi_2 \cos\theta_2)} Sq=Pejπq(sinϕ1cosθ1sinϕ2cosθ2)
因此,
S = P Σ q = 0 Q e j π q ( sin ⁡ ϕ 1 cos ⁡ θ 1 − sin ⁡ ϕ 2 cos ⁡ θ 2 ) S = P\Sigma_{q=0}^{Q}e^{j\pi q( \sin\phi_1 \cos\theta_1- \sin\phi_2 \cos\theta_2)} S=PΣq=0Qejπq(sinϕ1cosθ1sinϕ2cosθ2)
写到这里, 就可以明白了为什么还有 2 Q \frac{2}{Q} Q2为间隔的限制了。

相关阅读

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值