阵列信号基础之4:PM 算法

阵列信号基础之4:PM 算法


模型

PM 算法,就是传播算子(Propagator method, PM)算法。和其他子空间算法不同,它不需要 SVD 过程就可以快速获得噪声子空间。

假设有 K K 个来自不同方向的信号 s 1 ( t ) , , s K ( t ) s_1(t),\cdots,s_K(t) ,对应着角度 θ 1 , , θ K \theta_1,\cdots,\theta_K 。从而对于 M M 元均匀线阵的接收信号,表示如下:
x ( t ) = A ( θ ) s ( t ) + n ( t ) \mathbf x(t) = \mathbf A(\theta) \mathbf s(t)+\mathbf n(t)
其中
s ( t ) = [ s 1 ( t ) , , s K ( t ) ] T n ( t ) = [ n 1 ( t ) , , n M ( t ) ] T x ( t ) = [ x 1 ( t ) , , x M ( t ) ] T A ( θ ) = [ a ( θ 1 ) , , a ( θ K ) ] a ( θ k ) = [ 1 , exp ( j ψ k ) , exp ( j ( M 1 ) ψ k ) ] T ψ k = 2 π d sin θ k λ \begin{aligned} \mathbf s(t) &= [s_1(t),\cdots,s_K(t)]^T \\ \mathbf n(t) &= [n_1(t),\cdots,n_M(t)]^T \\ \mathbf x(t) &= [x_1(t),\cdots,x_M(t)]^T \\ \mathbf A(\boldsymbol \theta) &= [\mathbf a (\theta_1),\cdots,\mathbf a(\theta_K)] \\ \mathbf a(\theta_k) &=[1,\exp(j\psi_k)\cdots,\exp(j(M-1)\psi_k) ]^T \\ \psi_k &= \frac{2\pi d \sin\theta_k}{\lambda} \end{aligned}

具体细节参考 ULA


概念原理

将矩阵 A C M × K \mathbf A \in \mathbb C^{M \times K} 分块:
A = [ A 1 A 2 ] A 1 C K × K A 2 C ( M K ) × K \begin{aligned} \mathbf A &= \begin{bmatrix} \mathbf A_1 \\ \hline \mathbf A_2 \end{bmatrix}\\ \\ \mathbf A_1 &\in \mathbb C^{K \times K} \\ \mathbf A_2 &\in \mathbb C^{(M-K) \times K} \end{aligned}

在此基础上,假设 A 1 \mathbf A_1 是非奇异矩阵,即 A 1 \mathbf A_1 K K 行相互独立,则 A 2 \mathbf A_2 A 1 \mathbf A_1 的线性变换,有关系
A 2 = P H A 1 \textcolor{blue}{\boxed{\mathbf A_2 = \mathbf P^H \mathbf A_1}}
上面公式中的 P C K × ( M K ) \mathbf P \in \mathbb C^{K \times (M-K)} 就是本文的主角——传播算子

再令
Q H = [ P H I M K ] \mathbf Q^H = \left [ \begin{array}{c:c} \begin{matrix} \mathbf P^H \end{matrix}& \begin{matrix} -\mathbf I_{M-K} \end{matrix} \end{array} \right ]

我们可以发现
Q H A = [ P H I M K ] [ A 1 A 2 ] = P H A 1 A 2 = 0 \begin{aligned}\mathbf Q^H \mathbf A &= \left [ \begin{array}{c:c} \begin{matrix} \mathbf P^H \end{matrix}& \begin{matrix} -\mathbf I_{M-K} \end{matrix} \end{array} \right ] \begin{bmatrix} \mathbf A_1 \\ \hline \mathbf A_2 \end{bmatrix} \\ &= \mathbf P^H \mathbf A_1- \mathbf A_2 \\ &=0 \end{aligned}
此式表明, Q \mathbf Q 列向量 A \mathbf A 子空间正交的。联系 MUSIC 算法,本质上 Q \mathbf Q 就相当于噪声子空间


算法步骤

接下来,就是问题来了: Q \mathbf Q 怎么求?

由于 Q \mathbf Q 和信号的方向有关,可通过接收信号多快拍构造的矩阵以及空间协方差矩阵分块

X = [ x ( 1 ) , x ( 2 ) , , x ( N ) ] = [ X 1 X 2 ] C M × N X 1 C K × N X 2 C ( M K ) × N \begin{aligned} \mathbf X &= [\mathbf x(1),\mathbf x(2),\cdots,\mathbf x(N)] = \begin{bmatrix} \mathbf X_1 \\ \hline \mathbf X_2 \end{bmatrix} \in \mathbb C^{M \times N} \\ \\ \mathbf X_1 &\in \mathbb C^{K \times N} \\ \mathbf X_2 &\in \mathbb C^{(M-K) \times N} \end{aligned}

以及

R = E ( x ( t ) x H ( t ) ) = [ G H ] C M × M G C M × K H C M × ( M K ) \begin{aligned} \mathbf R &= \mathbb{E}(\mathbf x(t)\mathbf x^H(t)) =\begin{bmatrix} \mathbf G & \mathbf H \end{bmatrix} \in \mathbb C^{M \times M} \\ \\ \mathbf G &\in \mathbb C^{M \times K} \\ \mathbf H &\in \mathbb C^{M \times (M-K)} \end{aligned}

注意,在这里还有一层关系,不考虑噪声的时候,有

X = [ x ( 1 ) , x ( 2 ) , , x ( N ) ] = [ X 1 X 2 ] = A [ s ( 1 ) , s ( 2 ) , , s ( N ) ] = A S = [ A 1 A 2 ] S = [ X 1 X 2 ] A 1 S = X 1 A 2 S = X 2 \begin{aligned} \mathbf X &= [\mathbf x(1),\mathbf x(2),\cdots,\mathbf x(N)] =\begin{bmatrix} \mathbf X_1 \\ \hline \mathbf X_2 \end{bmatrix} \\ &= \mathbf A [\mathbf s(1),\mathbf s(2),\cdots,\mathbf s(N)] \\ &= \mathbf A \mathbf S \\ &=\begin{bmatrix} \mathbf A_1 \\ \hline \mathbf A_2 \end{bmatrix} \mathbf S =\begin{bmatrix} \mathbf X_1 \\ \hline \mathbf X_2 \end{bmatrix} \\ \mathbf A_1 \mathbf S &= \mathbf X_1 \\ \mathbf A_2 \mathbf S &= \mathbf X_2 \\ \end{aligned}

所以,
A 2 S = P H A 1 S X 2 = P H X 1 \mathbf A_2 \mathbf S = \mathbf P^H \mathbf A_1 \mathbf S \Longrightarrow \boxed{ \mathbf X_2 = \mathbf P^H \mathbf X_1}

还有这层关系,

R = E ( x ( t ) x H ( t ) ) = E ( A s ( t ) s H ( t ) A H ) = A R ss A H = A R ss [ A 1 H A 2 H ] = [ G H ] G = A R ss A 1 H H = A R ss A 2 H = A R ss A 1 H P H = G P \begin{aligned} \mathbf R &= \mathbb{E}(\mathbf x(t)\mathbf x^H(t)) = \mathbb{E}(\mathbf A \mathbf s(t)\mathbf s^H(t) \mathbf A^H) \\ &=\mathbf A \mathbf R_{\text{ss}} \mathbf A^H = \mathbf A \mathbf R_{\text{ss}} \left [ \begin{array}{c:c} \begin{matrix} \mathbf A_1^H \end{matrix}& \begin{matrix} \mathbf A_2^H \end{matrix} \end{array} \right] \\ &=\begin{bmatrix} \mathbf G & \mathbf H \end{bmatrix} \\ \\ \mathbf G &= \mathbf A \mathbf R_{\text{ss}} \mathbf A_1^H \\ \\ \mathbf H &= \mathbf A \mathbf R_{\text{ss}} \mathbf A_2^H = \mathbf A \mathbf R_{\text{ss}} \mathbf A_1^H \mathbf P \Longrightarrow \boxed{\mathbf H= \mathbf G \mathbf P} \end{aligned}

但实际系统噪声是不可忽略的,所以最终传播算子 P \mathbf P 可以通过最小化
J x ( P ) = X 2 P H X 1 F 2 J R ( P ) = H G P F 2 \begin{aligned} J_x(\mathbf P)&= \Vert \mathbf X_2 - \mathbf P^H \mathbf X_1 \Vert_F^2\\ J_R(\mathbf P)&= \Vert \mathbf H - \mathbf G \mathbf P \Vert_F^2 \end{aligned}

因此,根据最小二乘法,解为
P ^ H = X 2 ( X 1 H X 1 ) 1 X 1 H P ^ = ( G H G ) 1 G H H \begin{aligned} \hat{\mathbf P}^H &= \mathbf X_2 (\mathbf X_1^H \mathbf X_1)^{-1} \mathbf X_1^H \\ \hat{\mathbf P} &= (\mathbf G^H \mathbf G)^{-1} \mathbf G^H \mathbf H \end{aligned}

所以我们就得到了
Q ^ H = [ P ^ H I M K ] \hat{\mathbf Q}^H = \left [ \begin{array}{c:c} \begin{matrix} \hat{\mathbf P}^H \end{matrix}& \begin{matrix} -\mathbf I_{M-K} \end{matrix} \end{array} \right ]


估计算法

最大谱搜索

第一种就是谱估计,空间搜索。和 MUSIC 算法 一样。
max F ( θ ) = max 1 a H ( θ ) Q ^ H Q ^ a ( θ ) \max F(\theta) =\max \frac{1}{ \mathbf a^H (\theta) \hat{\mathbf Q}^H \hat{\mathbf Q} \mathbf a (\theta)}

代码

%PM算法 MATLAB CODE
clc;
close all;
clear;

M = 10;                   %x轴阵元数
K = 2;                    %信号数
d_lamda = 1/2;            %阵元间距
theta = [-30, 20];        %x轴方位角

L = 100;                  %快拍数
snr = 5;                  %信噪比

S = sqrt(10.^(snr/10))*(randn(K,L)+1j*randn(K,L));    %生成信号向量

A = exp(-1j*(0:M-1)'*d_lamda*2*pi*sin(theta/180*pi)); %生成导向矢量
A1 = A(1:K,:);
A2 = A(K+1:M,:);

X = A*S+(1/sqrt(2))*(randn(M,L)+1j*randn(M,L));       %生成接收矢量
X1 = X(1:K,:);
X2 = X(K+1:M,:);

R = X*X'/L;    %协方差矩阵
G = R(:, 1:K);
H = R(:, K+1:M);

%P_H = X2*pinv(X1'*X1)*X1';     %传播算子P^H
P = pinv(G'*G)*G'*H;            %传播算子P

%Q_H = [P_H,-eye(M-K)];         %构造噪声子空间
Q = [P;-eye(M-K)];              %构造噪声子空间
%Rq = Q_H*Q_H';
Rq = Q*Q';

searching_doa=-90:0.1:90;    %搜索范围为-90~90for i=1:length(searching_doa)
    a_theta=exp(-1j*(0:M-1)'*2*pi*d_lamda*sin(pi*searching_doa(i)/180));
    Pmusic(i)=1./abs((a_theta)'*Rq*a_theta);
end

plot(searching_doa,10*log(Pmusic),'r');
title('Propagator Method');
grid on;
xlim([-90, 90]);
xlabel('angle (degree)');
ylabel('magnitude (dB)');
set(gca,'xtick',[-90:20:90]);

TEST

求根思想

第二种方法类似于ROOT-MUSIC算法,无需搜索,直接求根。

a = zeros(2*M-1,1)';                     %找出多项式的系数,并按阶数从高至低排列

for i=-(M-1):(M-1)
    a(i+M) = sum(diag(Rq,i));
end

a1=roots(a);                             %使用ROOTS函数求出多项式的根                            
a2=a1(abs(a1)<1);                        %找出在单位圆里且最接近单位圆的N个根
[lamda,I]=sort(abs(abs(a2)-1));          %挑选出最接近单位圆的N个根
f=a2(I(1:K));                            %计算信号到达方向角
source_doa=[asin(angle(f(1))/pi)*180/pi,asin(angle(f(2))/pi)*180/pi];
source_doa=sort(source_doa);
disp('source_doa');
disp(source_doa);

猜你喜欢

转载自blog.csdn.net/qq_23947237/article/details/89282155
今日推荐