3 root-MUSIC 算法
3.1 算法原理
root-MUSIC 算法是 MUSIC 算法的一种多项式求根形式,其基本思想是 Pisarenko 分解。相比于 MUSIC 算法,root-MUSIC 算法无须谱峰搜索,降低了复杂度。
由前面可知,ULA 的方向矢量
a
(
θ
)
\mathbf{a}(\theta)
a(θ) 如下:
a
(
θ
)
=
[
exp
(
−
j
2
π
d
1
sin
θ
/
λ
)
⋮
exp
(
−
j
2
π
d
m
sin
θ
/
λ
)
⋮
exp
(
−
j
2
π
d
M
sin
θ
/
λ
)
]
\begin{equation*} \mathbf{a}(\mathbf{\theta}) = \begin{bmatrix} \exp(-j2\pi d_1\sin\theta/\lambda) \\ \vdots \\ \exp(-j2\pi d_m\sin\theta/\lambda) \\ \vdots \\ \exp(-j2\pi d_M\sin\theta/\lambda) \end{bmatrix} \end{equation*}
a(θ)=
exp(−j2πd1sinθ/λ)⋮exp(−j2πdmsinθ/λ)⋮exp(−j2πdMsinθ/λ)
根据
d
m
=
(
m
−
1
)
d
d_m = (m-1)d
dm=(m−1)d,此时令
ω
=
−
2
π
d
sin
θ
/
λ
\omega = -2\pi d \sin\theta/\lambda
ω=−2πdsinθ/λ,则有:
a
(
ω
)
=
[
1
exp
(
j
ω
)
⋮
exp
[
j
(
M
−
1
)
ω
]
]
\begin{equation*} \mathbf{a}(\mathbf{\omega}) = \begin{bmatrix} 1 \\ \exp(j\omega) \\ \vdots \\ \exp\left[j(M-1)\omega\right] \end{bmatrix} \end{equation*}
a(ω)=
1exp(jω)⋮exp[j(M−1)ω]
令
z
=
e
j
ω
z = e^{j\omega}
z=ejω,则有:
p
(
z
)
=
[
1
,
z
,
⋯
,
z
M
−
1
]
T
\begin{equation*} \mathbf{p}(z) = [1, z, \cdots, z^{M-1}]^T \end{equation*}
p(z)=[1,z,⋯,zM−1]T
而根据
a
(
θ
)
H
u
i
=
0
,
i
=
K
+
1
,
⋯
,
M
\mathbf{a}(\theta)^H\mathbf{u}_i = 0, i = K+1, \cdots, M
a(θ)Hui=0,i=K+1,⋯,M,可以得到:
p
i
(
z
)
=
u
i
H
p
(
z
)
=
0
,
i
=
K
+
1
,
⋯
,
M
\begin{equation*} p_i(z) = \mathbf{u}_i^H\mathbf{p}(z) = 0, i = K+1, \cdots, M \end{equation*}
pi(z)=uiHp(z)=0,i=K+1,⋯,M
综合以上,可得到:
f
(
z
)
=
p
H
(
z
)
U
N
U
N
H
p
(
z
)
\begin{equation*} f(z) = \mathbf{p}^H(z)\mathbf{U}_N\mathbf{U}_N^H \mathbf{p}(z) \end{equation*}
f(z)=pH(z)UNUNHp(z)
求得
f
(
z
)
f(z)
f(z) 的根即可得到估计角的信息。然而,上式并不是
z
z
z 的多项式,因为它还包含了
z
∗
z^*
z∗ 的幂次项。由于我们只对单位圆上的
z
z
z 值感兴趣,所以可以用
p
T
(
z
−
1
)
\mathbf{p}^{T}(z^{-1})
pT(z−1) 代替
p
H
(
z
)
\mathbf{p}^{H}(z)
pH(z),这就给出了求根 MUSIC 的多项式:
f
(
z
)
=
z
M
−
1
p
T
(
z
−
1
)
U
N
U
N
H
p
(
z
)
\begin{equation*} f(z) = z^{M-1}\mathbf{p}^{T}(z^{-1})\mathbf{U}_N\mathbf{U}_N^H \mathbf{p}(z) \end{equation*}
f(z)=zM−1pT(z−1)UNUNHp(z)
令
G
N
=
U
N
U
N
H
\mathbf{G}_N = \mathbf{U}_N\mathbf{U}_N^H
GN=UNUNH,则有:
z
M
−
1
p
T
(
z
−
1
)
G
N
=
[
g
[
1
,
1
]
z
M
−
1
+
⋯
+
g
[
M
−
1
,
1
]
z
+
g
[
M
,
1
]
⋮
g
[
1
,
M
]
z
M
−
1
+
⋯
+
g
[
M
−
1
,
M
]
z
+
g
[
M
,
M
]
]
T
\begin{equation*} z^{M-1}\mathbf{p}^{T}(z^{-1})\mathbf{G}_N = \begin{bmatrix} g_{[1,1]}z^{M-1} + \cdots + g_{[M-1,1]} z + g_{[M,1]} \\ \vdots \\ g_{[1,M]}z^{M-1} + \cdots + g_{[M-1,M]} z + g_{[M,M]} \end{bmatrix}^T \end{equation*}
zM−1pT(z−1)GN=
g[1,1]zM−1+⋯+g[M−1,1]z+g[M,1]⋮g[1,M]zM−1+⋯+g[M−1,M]z+g[M,M]
T
其中
g
[
i
,
j
]
g_{[i,j]}
g[i,j] 表示矩阵
G
N
\mathbf{G}_N
GN 的第
(
i
,
j
)
(i,j)
(i,j) 元素。此时易得:
f
(
z
)
=
g
[
1
,
1
]
z
M
−
1
+
g
[
2
,
1
]
z
M
−
2
+
⋯
+
g
[
M
−
1
,
1
]
z
+
g
[
M
,
1
]
+
g
[
1
,
2
]
z
M
+
g
[
2
,
2
]
z
M
−
1
+
⋯
+
g
[
M
−
1
,
2
]
z
2
+
g
[
M
,
2
]
z
⋮
+
g
[
1
,
M
]
z
2
M
−
2
+
g
[
2
,
M
]
z
2
M
−
3
⋯
+
g
[
M
−
1
,
M
]
z
M
+
g
[
M
,
M
]
z
M
−
1
\begin{equation*} \begin{aligned} f(z) &= g_{[1,1]}z^{M-1} + g_{[2,1]}z^{M-2} + \cdots + g_{[M-1,1]} z + g_{[M,1]} \\ &+ g_{[1,2]}z^{M} + g_{[2,2]}z^{M-1} + \cdots + g_{[M-1,2]} z^2 + g_{[M,2]} z \\ &\qquad \vdots \\ &+ g_{[1,M]}z^{2M-2} + g_{[2,M]}z^{2M-3}\cdots + g_{[M-1,M]} z^{M} + g_{[M,M]}z^{M-1} \end{aligned} \end{equation*}
f(z)=g[1,1]zM−1+g[2,1]zM−2+⋯+g[M−1,1]z+g[M,1]+g[1,2]zM+g[2,2]zM−1+⋯+g[M−1,2]z2+g[M,2]z⋮+g[1,M]z2M−2+g[2,M]z2M−3⋯+g[M−1,M]zM+g[M,M]zM−1
由此可以看出
f
(
z
)
f(z)
f(z) 中的阶数为
2
M
−
2
2M-2
2M−2,因此存在
M
−
1
M-1
M−1 对根,且每对根是相互共轭的关系。在理想情况下有
K
K
K 个根
z
1
,
⋯
,
z
K
z_1, \cdots, z_K
z1,⋯,zK 分布在单位圆上,因此在现实情况中只需要求得上式的
K
K
K 个接近于单位圆上的根即可。对于 ULA,有:
θ
i
=
arcsin
(
−
λ
2
π
d
arg
{
z
i
}
)
,
i
=
1
,
⋯
,
K
\begin{equation*} \theta_i = \arcsin\left(-\frac{\lambda}{2\pi d} \arg \{ z_i \} \right), i = 1, \cdots, K \end{equation*}
θi=arcsin(−2πdλarg{zi}),i=1,⋯,K
在 matlab 代码实现中,需要利用前面步骤求解得到噪声子空间
U
N
\mathbf{U}_N
UN 来构造
G
N
\mathbf{G}_N
GN,然后通过
G
N
\mathbf{G}_N
GN 中的元素来得到多项式
f
(
x
)
f(x)
f(x) 的系数,最后利用 roots 函数对多项式求根,部分代码实现如下:
Gn = Un*Un';
% 提取多项式系数并对多项式求根
coe = zeros(1, 2*M-1);
for i = -(M-1):(M-1)
coe(-i+M) = sum(diag(Gn,i));
end
r = roots(coe); % 利用roots函数求多项式的根
补充说明:root-MUSIC 算法与谱搜索方式的 MUSIC 算法原理是一样的,只不过是用关于 z z z 的矢量来代替导向矢量,从而用求根过程代替搜索过程。文章来源:https://www.toymoban.com/news/detail-516792.html
3.2 算法步骤
root-MUSIC 算法步骤如下(输入为阵列接收矩阵 X \mathbf{X} X):文章来源地址https://www.toymoban.com/news/detail-516792.html
- 计算协方差矩阵 R = 1 T X X H \mathbf{R} = \frac{1}{T} \mathbf{X}\mathbf{X}^H R=T1XXH。
- 对 R \mathbf{R} R 进行特征值分解,并对特征值进行排序,然后取得 M − K M-K M−K 个较小特征值对应的特征向量来组成噪声子空间 U N \mathbf{U}_N UN。
- 根据下式定义多项式
f
(
z
)
f(z)
f(z):
f ( z ) = z M − 1 p T ( z − 1 ) U N U N H p ( z ) \begin{equation*} f(z) = z^{M-1}\mathbf{p}^{T}(z^{-1})\mathbf{U}_N\mathbf{U}_N^H \mathbf{p}(z) \end{equation*} f(z)=zM−1pT(z−1)UNUNHp(z)
并且求出多项式 f ( z ) f(z) f(z) 的根 { z i : i = 1 , ⋯ , K } \{z_i:i = 1,\cdots, K\} {zi:i=1,⋯,K}。 - 利用下式求得角度
{
θ
i
:
i
=
1
,
⋯
,
K
}
\{\theta_i: i = 1,\cdots, K\}
{θi:i=1,⋯,K}:
θ i = arcsin ( − λ 2 π d arg { z i } ) , i = 1 , ⋯ , K \begin{equation*} \theta_i = \arcsin\left(-\frac{\lambda}{2\pi d} \arg \{ z_i \} \right), i = 1, \cdots, K \end{equation*} θi=arcsin(−2πdλarg{zi}),i=1,⋯,K
3.3 代码实现
% root_music.m
clear;
clc;
close all;
%% 参数设定
c = 3e8; % 光速
fc = 500e6; % 载波频率
lambda = c/fc; % 波长
d = lambda/2; % 阵元间距,可设 2*d = lambda
twpi = 2.0*pi; % 2pi
derad = pi/180; % 角度转弧度
theta = [-20, 30]*derad; % 待估计角度
idx = 0:1:7; idx = idx'; % 阵元位置索引
M = length(idx); % 阵元数
K = length(theta); % 信源数
T = 512; % 快拍数
SNR = 0; % 信噪比
%% 信号模型建立
S = randn(K,T) + 1j*randn(K,T); % 复信号矩阵S,维度为K*T
% A = exp(-1j*twpi*d*idx*sin(theta)/lambda); % 方向矢量矩阵A,维度为M*K
A = exp(-1j*pi*idx*sin(theta)); % 2d = lambda,直接忽略不写
X = A*S; % 接收矩阵X,维度为M*T
X = awgn(X,SNR,'measured'); % 添加噪声
%% root-MUSIC 算法
% 计算协方差矩阵
R = X*X'/T;
% 特征值分解并取得噪声子空间
[U,D] = eig(R); % 特征值分解
[D,I] = sort(diag(D)); % 将特征值排序从小到大
U = fliplr(U(:, I)); % 对应特征矢量排序,fliplr 之后,较大特征值对应的特征矢量在前面
Un = U(:, K+1:M); % 噪声子空间
Gn = Un*Un';
% 提取多项式系数并对多项式求根
coe = zeros(1, 2*M-1);
for i = -(M-1):(M-1)
coe(-i+M) = sum(diag(Gn,i));
end
r = roots(coe); % 利用roots函数求多项式的根
r = r(abs(r)<1); % 找出在单位圆里的根
[lamda,I] = sort(abs(abs(r)-1)); % 挑选出最接近单位圆的K个根
Theta = r(I(1:K));
Theta = asin(-angle(Theta)/pi)/derad; % 计算信号到达方向角
Theta = sort(Theta).';
disp('估计结果:');
disp(Theta);
3.4 参考内容
- 张小飞,陈华伟,仇小锋.阵列信号处理及MATLAB实现[M].电子工业出版社,2015.
- 王永良.空间谱估计理论与算法[M].清华大学出版社,2004.
- 【CSDN】root-MUSIC算法
- 【CSDN】DOA算法1:MUSIC算法(二)
到了这里,关于【学习笔记】【DOA子空间算法】3 root-MUSIC 算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!