DOA算法2:ESPRIT算法

目录

  • 算法简述
  • 算法要得到什么
  • 如何得到矩阵 Φ \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} = \begin{bmatrix} 1 & 1 & \cdots & 1\\ z_1 & z_2 & \cdots & z_M\\ \vdots & \vdots & \ddots & \vdots\\ z^{N-2}_1 & z^{N-2}_2 & \cdots & z^{N-2}_M\\ z^{N-1}_1 & z^{N-1}_2 & \cdots & z^{N-1}_M \end{bmatrix}. S= 1z1z1N2z1N11z2z2N2z2N11zMzMN2zMN1 .
其中每一列代表一个信号的旋转矢量,例如第 i i i列代表 s ( ϕ i ) \mathbf{s(\phi_i)} s(ϕi)
然后,我们可以将矩阵 S \mathbf{S} S分成两个矩阵,分别包含矩阵 S \mathbf{S} S的前 ( N − 1 ) (N-1) (N1)行和后 ( N − 1 ) (N-1) (N1)行:
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 ] \begin{aligned} \mathbf{S_0} &= \begin{bmatrix} 1 & 1 & \cdots & 1\\ z_1 & z_2 & \cdots & z_M\\ \vdots & \vdots & \ddots & \vdots\\ z^{N-2}_1 & z^{N-2}_2 & \cdots & z^{N-2}_M \end{bmatrix} \\ \mathbf{S_1} &= \begin{bmatrix} z_1 & z_2 & \cdots & z_M\\ \vdots & \vdots & \ddots & \vdots\\ z^{N-2}_1 & z^{N-2}_2 & \cdots & z^{N-2}_M\\ z^{N-1}_1 & z^{N-1}_2 & \cdots & z^{N-1}_M \end{bmatrix} \end{aligned} S0S1= 1z1z1N21z2z2N21zMzMN2 = z1z1N2z1N1z2z2N2z2N1zMzMN2zMN1
得到上面两个矩阵后,我们可以看到, 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 ] \begin{aligned} \mathbf{\Phi}= \begin{bmatrix} z_1 & 0 & \cdots & 0\\ 0 & z_2 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & z_M \end{bmatrix} \end{aligned} Φ= z1000z2000zM
那么矩阵 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) (N1)行和后 ( N − 1 ) (N-1) (N1)行。
那么对应地,矩阵 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 \begin{aligned} \mathbf{Q_0} &= \mathbf{S_0C}\\ \mathbf{Q_1} &= \mathbf{S_1C} = \mathbf{S_0 \Phi C} \end{aligned} Q0Q1=S0C=S1C=S0Φ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} Q1C1Φ1C=S0C=Q0
由此,我们可以设定一个新的矩阵为 Ψ \mathbf{\Psi} Ψ,满足:
Ψ − 1 = C − 1 Φ − 1 C ⇒ Q 1 Ψ − 1 = Q 0 ⇒ Q 1 = Q 0 Ψ \begin{aligned} \mathbf{\Psi^{-1}} &= \mathbf{C^{-1}\Phi^{-1}C} \\ \Rightarrow \mathbf{Q_1 \Psi^{-1}} &= \mathbf{Q_0} \\ \Rightarrow \mathbf{Q_1} &= \mathbf{Q_0 \Psi} \end{aligned} Ψ1Q1Ψ1Q1=C1Φ1C=Q0=Q0Ψ
其中,矩阵 Ψ = C − 1 Φ C \mathbf{\Psi} = \mathbf{C^{-1} \Phi C} Ψ=C1Φ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算法的步骤

  1. 用式 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=K1k=1KxkxkH来估计出相关矩阵 R \mathbf{R} R,再对其进行特征分解: R = Q Λ Q H \mathbf{R} = \mathbf{Q \Lambda Q^H} R=QH.得到矩阵 Q \mathbf{Q} Q
  2. 从矩阵 Q \mathbf{Q} Q中获得矩阵 Q s \mathbf{Q_s} Qs(对应于矩阵 Q \mathbf{Q} Q M M M个最大的特征值),代表信号子空间;
  3. 分别取矩阵 Q s \mathbf{Q_s} Qs的前 ( N − 1 ) (N-1) (N1)行和后 ( N − 1 ) (N-1) (N1)行,分别形成矩阵 Q 0 \mathbf{Q_0} Q0 Q 1 \mathbf{Q_1} Q1
  4. 使用最小二乘法(或完全最小二乘法)拟合出变换矩阵 Ψ \mathbf{\Psi} Ψ;
  5. 求出矩阵 Ψ \mathbf{\Psi} Ψ的特征值,这些特征值就是待估计的 z m z_m zm
  6. 使用下式获得DOA:
    在这里插入图片描述

参考文献(仅写文章的标题,以做记录)

[1]. Direction of Arrival Estimation

你可能感兴趣的:(智能信号处理,算法)