前言
在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=0∑N−1x[n]e−j(2π/N)kn, 其中 (0≤k≤N−1)(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=⎝⎜⎜⎜⎜⎜⎛111⋮11ξξ2⋮ξn−11ξ2ξ4⋮ξ2(n−1)⋯⋯⋯⋱⋯1ξn−1ξ2(n−1)⋮ξ(n−1)(n−1)⎠⎟⎟⎟⎟⎟⎞⋅(2)
其中
ξ
=
e
−
j
(
2
π
/
N
)
\xi = e^{-j(2 \pi / N)}
ξ=e−j(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[N−1]]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[N−1]]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(ϕ)=N1[1,ejπsin(ϕ),…,ejπ(N−1)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π(N−1)sin(ϕ0)1ejπsin(ϕ1)ejπ2sin(ϕ1)⋮ejπ(N−1)sin(ϕ1)1ejπsin(ϕ2)ejπ2sin(ϕ2)⋮ejπ(N−1)sin(ϕ2)⋯⋯⋯⋱⋯1ejπsin(ϕN−1)ejπ2sin(ϕN−1)⋮ejπ(N−1)sin(ϕN−1)⎠⎟⎟⎟⎟⎟⎞⋅(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(ϕN−1)]=[0,−N2,…,−N2(N−1)], 那么比较(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(ϕN−1)]=[0,−N2,…,−NN,−NN+2+2,…,−N2(N−1)+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}
W∈CN×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)
ϕ=sin−1(N2(k−1)−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(ϕ,θ)=N1[1,…,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ))…,ejπ((Q−1)sin(ϕ)cos(θ)+(P−1)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=0∑M−1y=0∑N−1f(x,y)e−j2π(Mux+Nvy)(5)
其中
u
=
0
,
…
,
M
−
1
u=0, \dots, M-1
u=0,…,M−1,
v
=
0
,
…
,
N
−
1
v=0, \dots, N-1
v=0,…,N−1.
令
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(M−1,0)f(0,1)f(1,1)⋮f(M−1,1)⋯⋯⋯⋯f(0,N−1)f(1,N−1)⋮f(M−1,N−1)⎦⎥⎥⎥⎤
可将其列化为
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+(v−1)∗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+(y−1)∗M:
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)=e−j2π(M(u−1)(x−1)+N(v−1)(y−1))
其实应该从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)=e−j2π(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(ϕ,θ)=N1[1,…,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ))…,ejπ((Q−1)sin(ϕ)cos(θ)+(P−1)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})}
e−j2π(Mux+Nvy)=e−jπ(uM2x+vN2y)=e−jπ(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.
ϕ={cos−1(−M2x),M2x≤1cos−1(−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. θ=⎩⎨⎧cos−1(−Nsinϕ2y),N2y≤1cos−1(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(ϕ)=N1[1,ejπsin(ϕ),…,ejπ(N−1)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)=N1[1,ejπsin(ϕ1),…,ejπ(N−1)sin(ϕ1)]TaULA(ϕ2)=N1[1,ejπsin(ϕ2),…,ejπ(N−1)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=0N−1ejπ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=a1⋅1−q1−qn(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
N−1)因此:
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)=N11−ejπ(sin(ϕ1)−sin(ϕ2))1−ejπ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(ϕ,θ)=N1[1,…,ejπ(qsin(ϕ)cos(θ)+pcos(ϕ))…,ejπ((Q−1)sin(ϕ)cos(θ)+(P−1)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θ1−sinϕ2cosθ2)Σi=0P−1ejπi(cosϕ1−cosϕ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θ1−sinϕ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θ1−sinϕ2cosθ2)
写到这里, 就可以明白了为什么还有
2
Q
\frac{2}{Q}
Q2为间隔的限制了。