目录
- 算法简述
- 算法要得到什么
- 如何得到矩阵 Φ \Phi Φ
- ESPRIT算法的步骤
- 参考文献(仅写文章的标题,以做记录)
注:本博文为本人阅读论文、文章后的原创笔记,未经授权不允许任何转载或商用行为,否则一经发现本人保留追责权利。有问题可留言联系,欢迎指摘批评,共同进步!!!
算法简述
ESPRIT算法全称为:Estimation of Signal Parameters using Rotational Invariance Techniques.与Root_MUSIC算法相同,也是一种参数估计技术。
ESPRIT算法基于一个事实:在旋转矢量中,一个元素上的信号来源于更早期元素信号的相移。
算法要得到什么
在Root_MUSIC算法的叙述中,我们已经设定
z
m
=
e
j
k
d
c
o
s
ϕ
m
z_m=e^{jkd\ cos\phi_m}
zm=ejkd cosϕm。并且根据式
R
s
=
S
A
S
H
\mathbf{R_s}=\mathbf{SAS^H}
Rs=SASH可知,在矩阵
A
\mathbf{A}
A确定的情况下,相关矩阵就是依赖于矩阵
S
\mathbf{S}
S的,它是一个
(
N
×
M
)
(N \times M)
(N×M)大小的旋转矢量矩阵。因此矩阵
S
\mathbf{S}
S可以写为:
S
=
[
1
1
⋯
1
z
1
z
2
⋯
z
M
⋮
⋮
⋱
⋮
z
1
N
−
2
z
2
N
−
2
⋯
z
M
N
−
2
z
1
N
−
1
z
2
N
−
1
⋯
z
M
N
−
1
]
.
\mathbf{S} =
其中每一列代表一个信号的旋转矢量,例如第
i
i
i列代表
s
(
ϕ
i
)
\mathbf{s(\phi_i)}
s(ϕi)。
然后,我们可以将矩阵
S
\mathbf{S}
S分成两个矩阵,分别包含矩阵
S
\mathbf{S}
S的前
(
N
−
1
)
(N-1)
(N−1)行和后
(
N
−
1
)
(N-1)
(N−1)行:
S
0
=
[
1
1
⋯
1
z
1
z
2
⋯
z
M
⋮
⋮
⋱
⋮
z
1
N
−
2
z
2
N
−
2
⋯
z
M
N
−
2
]
S
1
=
[
z
1
z
2
⋯
z
M
⋮
⋮
⋱
⋮
z
1
N
−
2
z
2
N
−
2
⋯
z
M
N
−
2
z
1
N
−
1
z
2
N
−
1
⋯
z
M
N
−
1
]
得到上面两个矩阵后,我们可以看到,
S
0
\mathbf{S_0}
S0和
S
1
\mathbf{S_1}
S1是存在等式关系的。
定义一个对角阵
Φ
\mathbf{\Phi}
Φ:
Φ
=
[
z
1
0
⋯
0
0
z
2
⋯
0
⋮
⋮
⋱
⋮
0
0
⋯
z
M
]
那么矩阵
S
0
\mathbf{S_0}
S0和
S
1
\mathbf{S_1}
S1的关系为:
S
1
=
S
0
Φ
\mathbf{S_1} = \mathbf{S_0 \Phi}
S1=S0Φ
如我们所见,只要我们能估计出矩阵
Φ
\mathbf{\Phi}
Φ,那么就能得到信号的DOA。
如何得到矩阵 Φ \Phi Φ
如果我们已知了 S 0 \mathbf{S_0} S0和 S 1 \mathbf{S_1} S1两个矩阵,那么很容易就能得到矩阵 Φ \Phi Φ。但是,显然, S 0 \mathbf{S_0} S0和 S 1 \mathbf{S_1} S1两个矩阵是未知的,因此需要寻找代替物来得到相同的结果。
ESPRIT算法有一个前提:承认一个事实,就是矩阵 S \mathbf{S} S中的旋转矢量涵盖了和矩阵 Q s \mathbf{Q_s} Qs相同的子空间(信号子空间)。因此矩阵 Q s \mathbf{Q_s} Qs与矩阵 S \mathbf{S} S一定存在变换关系,设定为 Q s = S C \mathbf{Q_s}=\mathbf{SC} Qs=SC,其中矩阵 C \mathbf{C} C是一个可逆矩阵。
有上面的前提条件,那么矩阵
Q
s
\mathbf{Q_s}
Qs也能模仿矩阵
S
\mathbf{S}
S分解成两个矩阵
Q
0
\mathbf{Q_0}
Q0和
Q
1
\mathbf{Q_1}
Q1,分别包含矩阵
Q
s
\mathbf{Q_s}
Qs的前
(
N
−
1
)
(N-1)
(N−1)行和后
(
N
−
1
)
(N-1)
(N−1)行。
那么对应地,矩阵
Q
0
\mathbf{Q_0}
Q0、
Q
1
\mathbf{Q_1}
Q1分别与矩阵
S
0
\mathbf{S_0}
S0和
S
1
\mathbf{S_1}
S1存在转换关系:
Q
0
=
S
0
C
Q
1
=
S
1
C
=
S
0
Φ
C
因此你可以找到矩阵
Q
0
\mathbf{Q_0}
Q0和
Q
1
\mathbf{Q_1}
Q1之间的关系为:
Q
1
C
−
1
Φ
−
1
C
=
S
0
C
=
Q
0
\mathbf{Q_1C^{-1}\Phi^{-1}C} = \mathbf{S_0C} = \mathbf{Q_0}
Q1C−1Φ−1C=S0C=Q0
由此,我们可以设定一个新的矩阵为
Ψ
\mathbf{\Psi}
Ψ,满足:
Ψ
−
1
=
C
−
1
Φ
−
1
C
⇒
Q
1
Ψ
−
1
=
Q
0
⇒
Q
1
=
Q
0
Ψ
其中,矩阵
Ψ
=
C
−
1
Φ
C
\mathbf{\Psi} = \mathbf{C^{-1} \Phi C}
Ψ=C−1ΦC.由该等式可知矩阵
Ψ
与矩阵
Φ
\mathbf{\Psi}与矩阵\mathbf{\Phi}
Ψ与矩阵Φ相似,而矩阵
Φ
\mathbf{\Phi}
Φ又恰好是对角阵,根据相似矩阵的性质,矩阵
Φ
\mathbf{\Phi}
Φ对角线上的元素就是矩阵
Ψ
\mathbf{\Psi}
Ψ的特征值!!!
因此,我们只要得到矩阵 Ψ \mathbf{\Psi} Ψ,再求其特征值,就可以得到我们想要的矩阵 Φ \mathbf{\Phi} Φ,进而求出DOA.
注意!因为矩阵 Q 0 \mathbf{Q_0} Q0和矩阵 Q 1 \mathbf{Q_1} Q1我们都能得到,因此可以用矩阵的最小二乘法来拟合出矩阵 Ψ \mathbf{\Psi} Ψ,再进行之后的运算。
ESPRIT算法的步骤
- 用式 R = 1 K ∑ k = 1 K x k x k H \mathbf{R} = \frac{1}{K} \sum_{k=1}^{K}\mathbf{x_k}\mathbf{x^H_k} R=K1∑k=1KxkxkH来估计出相关矩阵 R \mathbf{R} R,再对其进行特征分解: R = Q Λ Q H \mathbf{R} = \mathbf{Q \Lambda Q^H} R=QΛQH.得到矩阵 Q \mathbf{Q} Q;
- 从矩阵 Q \mathbf{Q} Q中获得矩阵 Q s \mathbf{Q_s} Qs(对应于矩阵 Q \mathbf{Q} Q的 M M M个最大的特征值),代表信号子空间;
- 分别取矩阵 Q s \mathbf{Q_s} Qs的前 ( N − 1 ) (N-1) (N−1)行和后 ( N − 1 ) (N-1) (N−1)行,分别形成矩阵 Q 0 \mathbf{Q_0} Q0、 Q 1 \mathbf{Q_1} Q1;
- 使用最小二乘法(或完全最小二乘法)拟合出变换矩阵 Ψ \mathbf{\Psi} Ψ;
- 求出矩阵 Ψ \mathbf{\Psi} Ψ的特征值,这些特征值就是待估计的 z m z_m zm;
- 使用下式获得DOA:
参考文献(仅写文章的标题,以做记录)
[1]. Direction of Arrival Estimation