基于matlab的相⼲信号的doa估计,基于空间平滑MUSIC算法的
相⼲信号DOA估计(1)
基于空间平滑MUSIC算法的相⼲信号DOA估计(1)
基于空间平滑MUSIC算法的相⼲信号DOA估计(1)
空间平滑MUSIC算法(1)
在上⼀篇博客中有提到,当多个⼊射信号相⼲时,传统MUSIC算法的效果就会不理想。具体原因是多个⼊射信号相⼲时,有部分能量就会散发到噪声⼦空间,使得MUSIC算法不能对其进⾏有效估计。
针对这种情况,解相⼲⽅法被提出。本⽂主要讲解通过降维处理解相⼲,之所以叫降维处理是因为这种⽅法将原阵列拆分成很多个⼦阵列,通过⼦阵列的协⽅差矩阵重构接收数据协⽅差矩阵,阵列的⾃由度DOF会随之降低,即可分辨的相⼲信号数降低。
先看看传统MUSIC算法对相⼲信号进⾏DOA估计的效果。
MATLAB代码
% Code For Music Algorithm
% The Signals Are All Coherent
% Author:痒⽺⽺
% Date:2020/10/29
clc; clear all; close all;
%% -------------------------initialization-------------------------
f = 500; % frequency
c = 1500; % spee
d sound
lambda = c/f; % wavelength
d = lambda/2; % array element spacing
M = 20; % number of array elements
N = 100; % number of snapshot
K = 6; % number of sources
coef = [1; exp(1i*pi/6);...
exp(1i*pi/3); exp(1i*pi/2);...
exp(2i*pi/3); exp(1i*2*pi)]; % coherence coefficient, K*1
doa_phi = [-30, 0, 20, 40, 60, 75]; % direction of arrivals
%% generate signal
dd = (0:M-1)'*d; % distance between array elements and reference element
A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda); % manifold array, M*K
S = sqrt(2)\(randn(1,N)+1i*randn(1,N)); % vector of random signal, 1*N
X = A*(coef*S); % received data without noise, M*N
X = awgn(X,10,'measured'); % received data with SNR 10dB
%% calculate the covariance matrix of received data and do eigenvalue decomposition Rxx = X*X'/N; % covariance matrix
[U,V] = eig(Rxx); % eigenvalue decomposition
V = diag(V); % vectorize eigenvalue matrix
[V,idx] = sort(V,'descend'); % sort the eigenvalues in descending order
U = U(:,idx); % reset the eigenvector
P = sum(V); % power of received data
P_cum = cumsum(V); % cumsum of V
%% define the noise space
J = find(P_cum/P>=0.95); % or the coefficient is 0.9
J = J(1); % number of principal component
Un = U(:,J+1:end);
%% music for doa; seek the peek
matlab生成随机数theta = -90:0.1:90; % steer theta
doa_a = exp(-1i*2*pi*dd*sind(theta)/lambda); % manifold array for seeking peak
music = abs(diag(1./(doa_a'*(Un*Un')*doa_a))); % the result of each theta
music = 10*log10(music/max(music)); % normalize the result and convert it to dB %% plot
figure;
plot(theta, music, 'linewidth', 2);
title('Music Algorithm For Doa', 'fontsize', 16);
xlabel('Theta(°)', 'fontsize', 16);
ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
grid on;
可以看到,对于相⼲信号,传统MUSIC算法DOA估计效果很差。
降维处理解相⼲⽅法主要包括空间平滑类处理算法,⽽空间平滑类处理算法可以分成前向空间平滑算法(FSS)、后向平滑算法(BSS)、前后向平滑算法(FBSS),正如上⾯所说,这些算法的估计效果很好,但是损失了阵列孔径,导致可分辨的相⼲信号数降低。
2.1 线性阵列信号模型
关于这个线性阵列中符号的具体说明可以参考上⼀篇博⽂。⼦空间⽅法——MUSIC算法
2.2 前向空间平滑算法
如上图所⽰,我们把M元阵列均匀分成L个⼦阵列,每个⼦阵列有N=M-L+1个阵元。以最左边的⼦阵列为参考阵列,定义第J个⼦阵的接收数据为:
X
J
f
1
]
X_{J}^{f}=\left[x_{J}, x_{J+1}, \cdots, x_{J+N-1}\right]
XJf?=[xJ?,xJ+1?,?,xJ+N?1?]那么第J个⼦阵接收数据的协⽅差矩阵(也称作空间平滑矩阵)可以表⽰为R
N
j
j
=
A
1
D
j
?
1
R
s
(
D
j
?
1
)
H
A
1
H
+
σ
2
I
N
j
=
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论