目录
从零开始
本人要开始做关于相控阵的毕设了。无奈基础太差,技术太菜,遂开始从零学起阵列处理方面的知识——以供复习和参考。
使用的教材是 H.L.Vans Trees ,Optimum Array Processing
啥是阵列处理
你想嘛,接收一个复杂的信号 拿着一根天线/麦克风在那杵着多捞啊。一个OV开头的摄像头模块都有很多感光阵元(这个。。其实和本文内容无关)。阵列处理中要经历加权处理(后文将提到) 所以理论上,阵列处理更能消除误差(或者更敏感,反正学着学着就知道了,不是吗)。
阵列流形矢量(Array Manifold Vector)
Now, 这里有个阵列,我们认为里面的每个阵元p都能接收到一个信号。简单来说,因为接收信号是在空间里采样,所以对信号的采样叫 空域采样(Spatial Sampling) 。
通过采样,我们可以得到一个矢量:
f
(
t
,
p
)
=
[
f
(
t
,
p
0
)
f
(
t
,
p
1
)
.
.
.
f
(
t
,
p
N
−
1
)
]
\bm{f}(t,\bm{p})= \left[ \begin{matrix} f(t,\bm{p_0})\\ f(t,\bm{p_1})\\ .\\ .\\ .\\ f(t,\bm{p_{N-1}})\\ \end{matrix} \right]
f(t,p)=⎣⎢⎢⎢⎢⎢⎢⎡f(t,p0)f(t,p1)...f(t,pN−1)⎦⎥⎥⎥⎥⎥⎥⎤
我们可以把这个矢量看成一个对于时间的一个函数表。对于这一坨数据。我们通常要用一个LTI滤波器处理:
卷积积分的形式:
y
(
t
)
=
∑
n
=
0
N
−
1
∫
−
∞
∞
h
n
(
t
−
τ
)
f
n
(
τ
,
p
n
)
d
τ
y(t)=\sum_{n=0}^{N-1}\int_{-\infty}^{\infty}h_n(t-\tau)f_n(\tau,\bm{p_n})d\tau
y(t)=n=0∑N−1∫−∞∞hn(t−τ)fn(τ,pn)dτ
简洁点,我们把
h
n
h_n
hn变成一个向量:
h
(
τ
)
=
[
h
0
(
τ
)
h
1
(
τ
)
.
.
.
h
N
−
1
(
τ
)
]
\bm{h}(\tau)= \left[ \begin{matrix} h_0(\tau)\\ h_1(\tau)\\ .\\ .\\ .\\ h_{N-1}(\tau)\\ \end{matrix} \right]
h(τ)=⎣⎢⎢⎢⎢⎢⎢⎡h0(τ)h1(τ)...hN−1(τ)⎦⎥⎥⎥⎥⎥⎥⎤
我们又可以矢量表示
y
(
t
)
y(t)
y(t):
y
(
t
)
=
∫
−
∞
∞
h
T
(
t
−
τ
)
f
(
τ
,
p
)
d
τ
y(t)=\int_{-\infty}^{\infty}\bm{h}^T(t-\tau)\bm{f}(\tau,\bm{p})d\tau
y(t)=∫−∞∞hT(t−τ)f(τ,p)dτ
让我们对
y
(
t
)
y(t)
y(t)做傅里叶变换——时域卷积,频域乘积:
Y
(
ω
)
=
∫
−
∞
∞
y
(
t
)
e
−
j
ω
t
d
t
=
H
T
(
ω
)
F
(
ω
)
\begin{aligned} Y(\omega)&=\int_{-\infty}^{\infty}y(t)e^{-j\omega t}dt\\ &=\bm{H^T}(\omega)\bm{F}(\omega) \end{aligned}
Y(ω)=∫−∞∞y(t)e−jωtdt=HT(ω)F(ω)
到这 稍微有点迷糊,作为CTFT的前提条件——时间=
∞
\infty
∞显然不可实现。其实我们这里有个前提:假设观察时间足够长以至于可以考虑为无限长。这样的话,我们就可以得到一个频域的向量了。
强调:频域向量内的每一个元素是各个阵元所收到的信号的频谱。
接下来,考虑一般情况,收到了一个平面波:
你看,收到的信号肯定有相位差吧!
我们令原点收到的信号为
f
(
t
)
f(t)
f(t):
f
(
t
,
p
)
=
[
f
(
t
−
τ
0
)
f
(
t
−
τ
1
)
.
.
.
f
(
t
−
τ
N
−
1
)
]
\bm{f}(t,\bm{p})= \left[ \begin{matrix} f(t-\tau_0)\\ f(t-\tau_1)\\ .\\ .\\ .\\ f(t-\tau_{N-1})\\ \end{matrix} \right]
f(t,p)=⎣⎢⎢⎢⎢⎢⎢⎡f(t−τ0)f(t−τ1)...f(t−τN−1)⎦⎥⎥⎥⎥⎥⎥⎤
考虑如下的球形坐标系:
我们设这个平面波的传播方向为(在直角坐标系下):
a
=
[
−
sin
θ
c
o
s
ϕ
−
sin
θ
s
i
n
ϕ
−
c
o
s
θ
]
\bm{a}= \left[ \begin{matrix} -\sin\theta cos\phi\\ -\sin\theta sin\phi\\ -cos\theta \end{matrix} \right]
a=⎣⎡−sinθcosϕ−sinθsinϕ−cosθ⎦⎤
不用动脑子了,其相位差为:
τ
n
=
a
T
p
n
c
=
−
1
c
[
s
i
n
θ
c
o
s
ϕ
p
x
n
+
s
i
n
θ
s
i
n
ϕ
p
y
n
+
c
o
s
θ
p
z
n
]
\tau_n=\frac{\bm{a^Tp_n}}{c}=-\frac{1}{c}[sin\theta cos\phi\bm{p_{x_n}}+sin\theta sin\phi\bm{p_{y_n}}+cos\theta\bm{p_{z_n}}]
τn=caTpn=−c1[sinθcosϕpxn+sinθsinϕpyn+cosθpzn]
书上还有负方向的情况,简简单单定义
u
=
−
a
\bm{u}=-\bm{a}
u=−a不赘述了。
咱们接着鼓捣式子:
讨论
ω
τ
n
\omega\tau_n
ωτn,
ω
τ
n
=
ω
c
a
T
p
n
\omega\tau_n=\frac{\omega}{c}\bm{a^Tp_n}
ωτn=cωaTpn
在波
c
o
s
(
ω
t
+
k
T
x
)
cos(\omega t+\bm{k^Tx})
cos(ωt+kTx)中,
k
=
ω
c
a
\bm{k}=\frac{\omega}{c}\bm{a}
k=cωa被称为波数(电磁场学过的,明明是个向量。。。).
根据傅里叶时移频域变化情况,我们可以知道
F
(
ω
)
\bm{F}(\omega)
F(ω)的第n个分量是:
e
−
j
ω
τ
n
F
在
零
点
的
频
谱
!
这
句
话
以
后
都
省
略
了
!
(
ω
)
e^{-j\omega\tau_n}F_{在零点的频谱!这句话以后都省略了!} (\omega)
e−jωτnF在零点的频谱!这句话以后都省略了!(ω)
我们的讨论主题阵列流形矢量(AMV)就呼之欲出了。
F
(
ω
)
=
F
(
ω
)
v
k
(
k
)
,
v
k
(
k
)
\bm{F}(\omega)=F(\omega)\bm{v_k(k)},\bm{v_k(k)}
F(ω)=F(ω)vk(k),vk(k)就是AMV。
v
k
(
k
)
=
[
e
−
j
k
T
p
0
e
−
j
k
T
p
1
.
.
.
e
−
j
k
T
p
N
−
1
]
\bm{v_k(k)}= \left[ \begin{matrix} e^{-j\bm{k^Tp_0}}\\ e^{-j\bm{k^Tp_1}}\\ .\\ .\\ .\\ e^{-j\bm{k^Tp_{N-1}}}\\ \end{matrix} \right]
vk(k)=⎣⎢⎢⎢⎢⎢⎢⎢⎡e−jkTp0e−jkTp1...e−jkTpN−1⎦⎥⎥⎥⎥⎥⎥⎥⎤
波束形成器(重构器)
课本上歪歪斜斜的写着‘波束形成器(beamformer)’五个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着两个字是‘重构’!
哎哟,这几个函数怎么鼓捣不完了,
我们设一个阵元的基函数(gay basis function)也就是每个阵元接收到的波为:
f
n
(
t
,
p
n
)
=
e
j
(
ω
t
−
k
T
p
n
)
f_n(t,\bm p_n)=e^{j(\omega t-\bm{k^Tp}_n)}
fn(t,pn)=ej(ωt−kTpn)
或整个阵列接收到的信号矢量
f
(
t
,
p
)
=
e
j
ω
t
v
k
(
k
)
=
[
e
j
(
ω
t
−
k
T
p
0
)
e
j
(
ω
t
−
k
T
p
1
)
.
.
.
e
j
(
ω
t
−
k
T
p
N
−
1
)
]
\begin{aligned} \bm f(t,\bm p)&=e^{j\omega t}\bm{v_k(k)}\\ &= \left[ \begin{matrix} e^{j(\omega t-\bm{k^Tp}_0)}\\ e^{j(\omega t-\bm{k^Tp}_1)}\\ .\\ .\\ .\\ e^{j(\omega t-\bm{k^Tp}_{N-1})}\\ \end{matrix} \right] \end{aligned}
f(t,p)=ejωtvk(k)=⎣⎢⎢⎢⎢⎢⎢⎢⎡ej(ωt−kTp0)ej(ωt−kTp1)...ej(ωt−kTpN−1)⎦⎥⎥⎥⎥⎥⎥⎥⎤
看看上文我们提到的
v
k
H
(
k
s
)
\bm{v_k^H(k_s)}
vkH(ks)我们可以知道上面的阵列处理器对这个平面波的响应是:
h
(
τ
)
=
[
1
N
δ
(
τ
+
τ
0
)
1
N
δ
(
τ
+
τ
1
)
.
.
.
1
N
δ
(
τ
+
τ
N
−
1
)
]
\bm h(\tau)= \left[ \begin{matrix} \frac{1}{N}\delta(\tau+\tau_0)\\ \frac{1}{N}\delta(\tau+\tau_1)\\ .\\ .\\ .\\ \frac{1}{N}\delta(\tau+\tau_{N-1})\\ \end{matrix} \right]
h(τ)=⎣⎢⎢⎢⎢⎢⎢⎡N1δ(τ+τ0)N1δ(τ+τ1)...N1δ(τ+τN−1)⎦⎥⎥⎥⎥⎥⎥⎤
而频(空)域我们可以写成更聪明的形式,我们一共轭,复指数的幂直接变了个符号。
H
T
(
ω
)
=
1
N
v
k
H
(
k
s
)
=
1
N
[
e
j
k
T
p
0
e
j
k
T
p
1
.
.
.
e
j
k
T
p
N
−
1
]
T
\bm{H^T}(\omega)=\frac{1}{N}\bm{v_k^H(k_s)}= \frac{1}{N} \left[ \begin{matrix} e^{j\bm{k^Tp_0}}\\ e^{j\bm{k^Tp_1}}\\ .\\ .\\ .\\ e^{j\bm{k^Tp_{N-1}}}\\ \end{matrix} \right]^T
HT(ω)=N1vkH(ks)=N1⎣⎢⎢⎢⎢⎢⎢⎢⎡ejkTp0ejkTp1...ejkTpN−1⎦⎥⎥⎥⎥⎥⎥⎥⎤T
其中
k
s
\bm{k_s}
ks是我们感兴趣的电磁波波数。
再傻瓜点:
H
(
ω
)
=
1
N
v
k
∗
(
k
s
)
\bm{H}(\omega)=\frac{1}{N}\bm{v_k^*(k_s)}
H(ω)=N1vk∗(ks)
频率-波数响应函数(Frequency-wavenumber response function)
别忘了,阵列处理是为了得到更好的结果。也就是得到一个更好的结果。
通过分析上面的式子,我们可以得到一个有趣的结论:
y
(
t
,
k
)
=
H
T
(
ω
)
v
k
(
k
)
e
j
ω
t
=
e
j
ω
t
y(t,\bm{k})=\bm H^T(\omega)\bm v_k(\bm k)e^{j\omega t}=e^{j\omega t}
y(t,k)=HT(ω)vk(k)ejωt=ejωt
我们发现,一个频域矢量和一个时域的矢量相乘了,最后得到的是一个时域的响应。请记住,这不是特殊情况。我们可以做一个定义:
γ
(
ω
,
k
)
≜
H
T
(
ω
)
v
k
(
k
)
\bm\gamma(\omega,\bm k)\triangleq\bm H^T(\omega)\bm v_k(\bm k)
γ(ω,k)≜HT(ω)vk(k)
我们把它称为频率-波数响应函数(Frequency-wavenumber response function)。课本上的介绍如下(中文不好复制,遂复读英文版):
The frequency-wavenumber response function describes the response to an arbitrary plane wave. In most physical applications there is a coupling bet,ween the temporal frequency
ω
\omega
ω and the spatial wavenumber
k
\bm k
k through the wave equation governing the propagation of the plane wave. Sometimes this can be a very simple relationship such as a plane wave in a homogeneous (and infinite) space; in other instances it can be quite complicated, such as the modal behavior in layered media that often occurs in underwater acoustics(水下声纳) and seismology(地震学).