空间谱估计基础算法详解——MUSIC算法
本文叙述在均匀线阵接收信号模型下通过MUSIC算法对多个信号进行DOA(Direction of Arrival,波达方向)估计的推导过程。
全文内容来自于何子述老师的现代数字信号处理及
一 、 信号DOA估计
1.1 信号模型
考虑
N
N
N个远场的窄带信号入射到空间阵列中,其中天线阵列为由
M
M
M个阵元组成的均匀线性阵列(ULA,uniform linear array),通常情况下可以假设
M
>
N
M>N
M>N。窄带信号
s
~
(
t
)
\tilde{s}(t)
s~(t)可以表示成如下的复数形式:
s
~
(
t
)
=
s
(
t
)
e
j
ω
0
t
\tilde{s}(t)=s(t)e^{j\omega_{0}t}
s~(t)=s(t)ejω0t
其中
s
(
t
)
=
u
(
t
)
e
j
ψ
(
t
)
s(t)=u(t)e^{j\psi(t)}
s(t)=u(t)ejψ(t)是信号的复包络,
u
(
t
)
u(t)
u(t)和
e
j
ψ
(
t
)
e^{j\psi(t)}
ejψ(t)分别是接收信号的幅度和相位,
ω
0
\omega_0
ω0是接收信号的载波角频率。
在均匀阵列中,阵列之间等间距分布,相邻间隔取为
d
d
d,当信号入射角方向为
θ
\theta
θ时,由于远场信号的入射波到达阵列时可以视为平面波,因此相邻阵元之间的波程差为
d
s
i
n
θ
dsin\theta
dsinθ,以线阵0阵元为参考阵元,则不难得出阵元
m
m
m达参考阵元的波程差为
m
d
s
i
n
θ
mdsin\theta
mdsinθ。对于平面波,
m
m
m阵元相对于0阵元的传播时延为
τ
m
=
m
d
s
i
n
θ
c
=
m
τ
\tau_m=\frac{mdsin\theta}{c}=m\tau
τm=cmdsinθ=mτ
其中,
τ
=
d
s
i
n
θ
c
\tau=\frac{dsin\theta}{c}
τ=cdsinθ为相邻阵元之间的时延差,
c
c
c是光速。
阵元0的接收信号可以表示为:
x
~
(
t
)
=
s
~
(
t
)
=
s
(
t
)
e
j
ω
0
t
\tilde{x}(t)=\tilde{s}(t)=s(t)e^{j\omega_{0}t}
x~(t)=s~(t)=s(t)ejω0t
则阵元m的接收信号可以表示为:
x
~
m
(
t
)
=
x
~
(
t
−
τ
m
)
=
s
~
(
t
−
τ
m
)
\tilde{x}_m(t)=\tilde{x}(t-\tau_m)=\tilde{s}(t-\tau_m)
x~m(t)=x~(t−τm)=s~(t−τm)
因为信号
s
~
(
t
)
\tilde{s}(t)
s~(t)是窄带信号,即,
s
(
t
)
s(t)
s(t)是慢变化的,因此有如下简化
s
(
t
)
≈
s
(
t
−
τ
m
)
,
m
=
0
,
1
,
.
.
.
,
M
−
1
s(t)\approx{s(t-\tau_m)},m=0,1,...,M-1
s(t)≈s(t−τm),m=0,1,...,M−1
所以有
x
~
m
(
t
)
=
s
~
(
t
−
τ
m
)
=
s
(
t
−
τ
m
)
e
j
ω
0
(
t
−
τ
m
)
≈
s
(
t
)
e
j
ω
0
t
e
−
j
ω
0
τ
=
s
~
(
t
)
e
−
j
ω
0
τ
\tilde{x}_m(t)=\tilde{s}(t-\tau_m)=s(t-\tau_m)e^{j\omega_0(t-\tau_m)}\approx{s(t)e^{j\omega_0t}e^{-j\omega_0\tau}}=\tilde{s}(t)e^{-j\omega_0\tau}
x~m(t)=s~(t−τm)=s(t−τm)ejω0(t−τm)≈s(t)ejω0te−jω0τ=s~(t)e−jω0τ
定义相邻阵元间的相位差为:
ϕ
=
ω
0
τ
=
2
π
f
0
d
s
i
n
θ
/
c
=
2
π
d
s
i
n
θ
/
λ
\phi=\omega_0\tau=2\pi f_0 dsin\theta/c=2\pi dsin\theta/\lambda
ϕ=ω0τ=2πf0dsinθ/c=2πdsinθ/λ
其中
f
0
f_0
f0是入射信号的载波频率,
λ
\lambda
λ是载波的波长。现在定义列向量:
x
~
=
[
x
~
0
(
t
)
x
~
1
(
t
)
.
.
.
x
~
M
−
1
(
t
)
]
T
\tilde{\pmb{x}}=[\tilde{x}_0(t)\quad\tilde{x}_1(t)\quad...\quad\tilde{x}_{M-1}(t)]^T
x~=[x~0(t)x~1(t)...x~M−1(t)]T
以及
a
(
θ
)
=
[
1
e
−
j
ϕ
.
.
.
e
−
j
(
M
−
1
)
ϕ
]
T
\pmb{a}(\theta)=[1\quad e^{-j\phi}\quad ...\quad e^{-j(M-1)\phi}]^T
a(θ)=[1e−jϕ...e−j(M−1)ϕ]T
则各阵元接收到的信号可以表示成
x
~
(
t
)
=
a
(
θ
)
s
~
(
t
)
=
a
(
θ
)
s
(
t
)
e
j
ω
0
t
\tilde{\pmb{x}}(t)=\pmb{a}(\theta)\tilde{s}(t)=\pmb{a}(\theta)s(t)e^{j\omega_0t}
x~(t)=a(θ)s~(t)=a(θ)s(t)ejω0t
其中
a
(
θ
)
\pmb{a}(\theta)
a(θ)称为导向矢量(steering vector)或者方向矢量,也称为阵列的阵列流形。在阵列信号处理中,复载波
e
j
w
0
t
e^{jw_0t}
ejw0t不含有信号的有用信息,故通常可以只考虑复基带信号。因此公式(10)对应的离散时间复基带信号可以表示为
x
(
n
)
=
a
(
θ
)
s
(
n
)
\pmb{x}(n)=\pmb{a}(\theta)s(n)
x(n)=a(θ)s(n)
其中时间变量
n
n
n称为快拍(snapshot),表示n时刻对所有阵元同时采样。
现在考虑当
K
K
K个信号同时从
θ
1
,
θ
2
,
.
.
.
,
θ
K
\theta_1,\theta_2,...,\theta_K
θ1,θ2,...,θK方向入射到阵列中,则天线阵列接收到的离散时间基带信号是个入射信号源的和,即可以表示成
x
(
n
)
=
a
(
θ
1
)
s
1
(
n
)
+
a
(
θ
2
)
s
2
(
n
)
+
⋯
+
a
(
θ
K
)
s
K
(
n
)
\boldsymbol{x}(n)=\boldsymbol{a}\left(\theta_{1}\right) s_{1}(n)+\boldsymbol{a}\left(\theta_{2}\right) s_{2}(n)+\cdots+\boldsymbol{a}\left(\theta_{K}\right) s_{K}(n)
x(n)=a(θ1)s1(n)+a(θ2)s2(n)+⋯+a(θK)sK(n)
其中第
k
k
k个信号源对应的导向矢量为
a
(
θ
k
)
=
[
1
e
−
j
ϕ
k
⋯
e
−
j
(
M
−
1
)
ϕ
k
]
T
,
ϕ
k
=
2
π
d
sin
θ
k
/
λ
,
k
=
1
,
2
,
⋯
,
K
\boldsymbol{a}\left(\theta_{k}\right)=\left[\begin{array}{llll} 1 & \mathrm{e}^{-\mathrm{j} \phi_{k}} & \cdots & \mathrm{e}^{-\mathrm{j}(M-1) \phi_{k}} \end{array}\right]^{\mathrm{T}}, \quad \phi_{k}=2 \pi d \sin \theta_{k} / \lambda, \quad k=1,2, \cdots, K
a(θk)=[1e−jϕk⋯e−j(M−1)ϕk]T,ϕk=2πdsinθk/λ,k=1,2,⋯,K
分别定义信号向量
s
(
n
)
s(n)
s(n)和方向矩阵(direction matrix)
A
\pmb{A}
A为
s
(
n
)
=
[
s
1
(
n
)
s
2
(
n
)
⋯
s
K
(
n
)
]
T
∈
C
K
×
1
A
=
[
a
(
θ
1
)
a
(
θ
2
)
⋯
a
(
θ
K
)
]
=
[
1
1
⋯
1
e
−
j
ϕ
1
e
−
j
ϕ
2
⋯
e
−
j
ϕ
K
⋮
⋮
⋱
⋮
e
−
j
(
M
−
1
)
ϕ
1
e
−
j
(
M
−
1
)
ϕ
2
⋯
e
−
j
(
M
−
1
)
ϕ
K
]
∈
C
M
×
K
\begin{array}{l} \boldsymbol{s}(n)=\left[\begin{array}{cccc} s_{1}(n) & s_{2}(n) & \cdots & s_{K}(n) \end{array}\right]^{\mathrm{T}} \in \mathbb{C}^{K \times 1} \\ \boldsymbol{A}=\left[\begin{array}{llll} \boldsymbol{a}\left(\theta_{1}\right) & \boldsymbol{a}\left(\theta_{2}\right) & \cdots & \boldsymbol{a}\left(\theta_{K}\right) \end{array}\right] \\ =\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ \mathrm{e}^{-\mathrm{j} \phi_{1}} & \mathrm{e}^{-\mathrm{j} \phi_{2}} & \cdots & \mathrm{e}^{-\mathrm{j} \phi_{K}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{e}^{-\mathrm{j}(M-1) \phi_{1}} & \mathrm{e}^{-\mathrm{j}(M-1) \phi_{2}} & \cdots & \mathrm{e}^{-\mathrm{j}(M-1) \phi_{K}} \end{array}\right] \in \mathbb{C}^{M \times K} \end{array}
s(n)=[s1(n)s2(n)⋯sK(n)]T∈CK×1A=[a(θ1)a(θ2)⋯a(θK)]=
1e−jϕ1⋮e−j(M−1)ϕ11e−jϕ2⋮e−j(M−1)ϕ2⋯⋯⋱⋯1e−jϕK⋮e−j(M−1)ϕK
∈CM×K
则公式(14)可以写成向量形式,即:
x
(
n
)
=
A
s
(
n
)
∈
C
M
×
1
\pmb{x}(n)=\pmb{A}\pmb{s}(n)\in \mathbb{C}^{M \times 1}
x(n)=As(n)∈CM×1
从上式中可以看出,阵列接收信号可以由信号矢量和方向矩阵完全确定,由于接收机不可避免地会引入加性噪声,因此在实际工程中阵列接收信号可以表示成
x
(
n
)
=
A
s
(
n
)
+
v
(
n
)
\pmb{x}(n)=\pmb{A}\pmb{s}(n) + \pmb{v}(n)
x(n)=As(n)+v(n)
其中,
v
(
n
)
∈
C
M
×
1
\pmb{v}(n)\in\mathbb{C}^{M\times1}
v(n)∈CM×1为噪声向量。公式(10)的展开形式为
[
x
0
(
n
)
x
1
(
n
)
⋮
x
M
−
1
(
n
)
]
=
[
1
1
⋯
1
e
−
j
ϕ
1
e
−
j
ϕ
2
⋯
e
−
j
ϕ
K
⋮
⋮
⋱
⋮
e
−
j
(
M
−
1
)
ϕ
1
e
−
j
(
M
−
1
)
ϕ
2
⋯
e
−
j
(
M
−
1
)
ϕ
K
]
[
s
1
(
n
)
s
2
(
n
)
⋮
s
K
(
n
)
]
+
[
v
0
(
n
)
v
1
(
n
)
⋮
v
M
−
1
(
n
)
]
\left[\begin{array}{c} x_{0}(n) \\ x_{1}(n) \\ \vdots \\ x_{M-1}(n) \end{array}\right]=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ \mathrm{e}^{-j \phi_{1}} & \mathrm{e}^{-\mathrm{j} \phi_{2}} & \cdots & \mathrm{e}^{-\mathrm{j} \phi_{K}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{e}^{-\mathrm{j}(M-1) \phi_{1}} & \mathrm{e}^{-\mathrm{j}(M-1) \phi_{2}} & \cdots & \mathrm{e}^{-\mathrm{j}(M-1) \phi_{K}} \end{array}\right]\left[\begin{array}{c} s_{1}(n) \\ s_{2}(n) \\ \vdots \\ s_{K}(n) \end{array}\right]+\left[\begin{array}{c} v_{0}(n) \\ v_{1}(n) \\ \vdots \\ v_{M-1}(n) \end{array}\right]
x0(n)x1(n)⋮xM−1(n)
=
1e−jϕ1⋮e−j(M−1)ϕ11e−jϕ2⋮e−j(M−1)ϕ2⋯⋯⋱⋯1e−jϕK⋮e−j(M−1)ϕK
s1(n)s2(n)⋮sK(n)
+
v0(n)v1(n)⋮vM−1(n)
通常情况下,可以假设各个阵元接收到的噪声是均值为0、方差为
σ
2
\sigma^2
σ2的高斯白噪声,并且不同阵元间的接收噪声相互独立,信号与噪声之间也噪声独立,即
∀
n
,
l
\forall{n,l}
∀n,l都有
E
{
v
i
(
n
)
}
=
0
,
E
{
v
i
(
n
)
v
i
∗
(
l
)
}
=
σ
2
δ
(
n
−
l
)
,
E
{
v
i
(
n
)
v
m
∗
(
l
)
}
=
0
,
i
≠
m
E
{
s
i
(
n
)
v
m
∗
(
l
)
}
=
0
,
\begin{array}{l} \mathrm{E}\left\{v_{i}(n)\right\}=0, \\ \mathrm{E}\left\{v_{i}(n) v_{i}^{*}(l)\right\}=\sigma^{2} \delta(n-l), \\ \mathrm{E}\left\{v_{i}(n) v_{m}^{*}(l)\right\}=0, \quad i \neq m \\ \mathrm{E}\left\{s_{i}(n) v_{m}^{*}(l)\right\}=0, \end{array}
E{vi(n)}=0,E{vi(n)vi∗(l)}=σ2δ(n−l),E{vi(n)vm∗(l)}=0,i=mE{si(n)vm∗(l)}=0,
或者等价的向量形式
E
{
v
(
n
)
}
=
0
E
{
v
(
n
)
v
H
(
l
)
}
=
σ
2
I
δ
(
n
−
l
)
E
{
s
(
n
)
v
H
(
l
)
}
=
0
\begin{array}{l} \mathrm{E}\{\boldsymbol{v}(n)\}=\mathbf{0} \\ \mathrm{E}\left\{\boldsymbol{v}(n) \boldsymbol{v}^{\mathrm{H}}(l)\right\}=\sigma^{2} \boldsymbol{I} \delta(n-l) \\ \mathrm{E}\left\{\boldsymbol{s}(n) \boldsymbol{v}^{\mathrm{H}}(l)\right\}=\mathbf{0} \end{array}
E{v(n)}=0E{v(n)vH(l)}=σ2Iδ(n−l)E{s(n)vH(l)}=0
1.2 基于MUSIC算法的多个信号的DOA估计
公式实在是太难敲了,直接把书上的截图放上来了
二、信号频率估计
先假设信号
x
(
n
)
x(n)
x(n)是复正弦信号加上高斯白噪声,则可以定义信号模型为
x
(
n
)
=
∑
k
=
1
K
α
k
e
j
ω
k
n
+
v
(
n
)
x(n)=\sum_{k=1}^{K} \alpha_{k} \mathrm{e}^{\mathrm{j} \omega_{k} n}+v(n)
x(n)=k=1∑Kαkejωkn+v(n)
其中,
α
k
=
∣
α
k
∣
e
j
φ
k
\alpha_k=|\alpha_k|e^{j\varphi_k}
αk=∣αk∣ejφk和
ω
k
\omega_k
ωk分别表示信号的复幅度和角频率。初始相位
φ
k
\varphi_k
φk是在
[
0
,
2
π
]
[0,2\pi]
[0,2π]范围内均匀分布的随机变量,同时当
i
≠
j
i \neq{j}
i=j时,
φ
i
\varphi_i
φi和
φ
k
\varphi_k
φk相互独立;
v
(
n
)
v(n)
v(n)是零均值、方差为
σ
2
\sigma^2
σ2的白噪声,同时与信号相互独立。
其向量形式可以写成:
x
(
n
)
=
A
s
(
n
)
+
v
(
n
)
∈
C
M
×
1
\pmb{x}(n)=\pmb{A}\pmb{s}(n) + \pmb{v}(n) \in \mathbb{C}^{M\times1}
x(n)=As(n)+v(n)∈CM×1
此时方向矩阵
A
\pmb{A}
A、
a
(
ω
)
\pmb{a}(\omega)
a(ω)、
s
(
n
)
\pmb{s}(n)
s(n)、
v
(
n
)
\pmb{v}(n)
v(n)分别定义为
A
=
[
a
(
ω
1
)
a
(
ω
2
)
⋯
a
(
ω
K
)
]
=
[
1
1
⋯
1
e
−
j
ω
1
e
−
j
ω
2
⋯
e
−
j
ω
K
⋮
⋮
⋱
⋮
e
−
j
(
M
−
1
)
ω
1
e
−
j
(
M
−
1
)
ω
2
⋯
e
j
(
M
−
1
)
ω
K
]
∈
C
M
×
K
\boldsymbol{A}=\left[\begin{array}{llll} \boldsymbol{a}\left(\omega_{1}\right) & \boldsymbol{a}\left(\omega_{2}\right) & \cdots & \boldsymbol{a}\left(\omega_{K}\right) \end{array}\right]=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ \mathrm{e}^{-j \omega_{1}} & \mathrm{e}^{-j \omega_{2}} & \cdots & \mathrm{e}^{-j \omega_{K}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathrm{e}^{-j(M-1) \omega_{1}} & \mathrm{e}^{-\mathrm{j}(M-1) \omega_{2}} & \cdots & \mathrm{e}^{\mathrm{j}(M-1) \omega_{K}} \end{array}\right] \in \mathbb{C}^{M \times K}
A=[a(ω1)a(ω2)⋯a(ωK)]=
1e−jω1⋮e−j(M−1)ω11e−jω2⋮e−j(M−1)ω2⋯⋯⋱⋯1e−jωK⋮ej(M−1)ωK
∈CM×K
a
(
ω
)
=
[
1
e
−
j
ω
⋮
e
−
j
(
M
−
1
)
ω
]
,
s
(
n
)
=
[
α
1
e
j
ω
1
n
α
2
e
j
ω
2
n
⋮
α
K
e
j
ω
K
n
]
,
v
(
n
)
=
[
v
(
n
)
v
(
n
−
1
)
⋮
v
(
n
−
M
+
1
)
]
\boldsymbol{a}(\omega)=\left[\begin{array}{c} 1 \\ \mathrm{e}^{-\mathrm{j} \omega} \\ \vdots \\ \mathrm{e}^{-\mathrm{j}(M-1) \omega} \end{array}\right], \quad \boldsymbol{s}(n)=\left[\begin{array}{c} \alpha_{1} \mathrm{e}^{\mathrm{j} \omega_{1} n} \\ \alpha_{2} \mathrm{e}^{\mathrm{j} \omega_{2} n} \\ \vdots \\ \alpha_{K} \mathrm{e}^{\mathrm{j} \omega_{K^{n}}} \end{array}\right], \quad \boldsymbol{v}(n)=\left[\begin{array}{c} v(n) \\ v(n-1) \\ \vdots \\ v(n-M+1) \end{array}\right]
a(ω)=
1e−jω⋮e−j(M−1)ω
,s(n)=
α1ejω1nα2ejω2n⋮αKejωKn
,v(n)=
v(n)v(n−1)⋮v(n−M+1)