【学习笔记】【DOA子空间算法】2 MUSIC 算法

【学习笔记】【DOA子空间算法】2 MUSIC 算法

2 MUSIC 算法

2.1 算法原理

  根据信号模型,可以得到接收信号的协方差矩阵,理想协方差矩阵如下:
R = E [ x ( t ) x H ( t ) ] = A E [ s ( t ) s H ( t ) ] A H + E [ n ( t ) n H ( t ) ] = A R S A H + σ n 2 I \begin{equation*} \begin{aligned} \mathbf{R} &= \mathrm{E}[\mathbf{x}(t)\mathbf{x}^{H}(t)]\\ &= \mathbf{A}\mathrm{E}[\mathbf{s}(t)\mathbf{s}^{H}(t)]\mathbf{A}^H + \mathrm{E}[\mathbf{n}(t)\mathbf{n}^{H}(t)] \\ &= \mathbf{A}\mathbf{R}_S\mathbf{A}^H + \sigma_n^2\mathbf{I} \end{aligned} \end{equation*} R=E[x(t)xH(t)]=AE[s(t)sH(t)]AH+E[n(t)nH(t)]=ARSAH+σn2I
其中 R S \mathbf{R}_S RS σ n 2 I \sigma_n^2\mathbf{I} σn2I 分别代表信号协方差矩阵和噪声协方差矩阵, σ n 2 \sigma_n^2 σn2 为噪声方差, I \mathbf{I} I 为单位矩阵。需要注意到的是,由于信号源之间是独立的, R S \mathbf{R}_S RS 是对角非奇异矩阵; R \mathbf{R} R 是非奇异的,同时 R = R H \mathbf{R} = \mathbf{R}^H R=RH,因此 R \mathbf{R} R 是 Hermitian 矩阵且是正定矩阵。
  但因为采样数 T T T 有限,理想协方差矩阵无法直接获得,此时通常用样本的协方差矩阵 R ^ \hat{\mathbf{R}} R^ 来代替:
R ≜ R ^ = 1 T ∑ t = 1 T x ( t ) x H ( t ) = 1 T X X H \begin{equation*} \mathbf{R} \triangleq \hat{\mathbf{R}} = \frac{1}{T} \sum_{t=1}^{T} \mathbf{x}(t)\mathbf{x}^{H}(t) = \frac{1}{T} \mathbf{X}\mathbf{X}^H \end{equation*} RR^=T1t=1Tx(t)xH(t)=T1XXH
  对 R \mathbf{R} R 进行特征值分解,可得到:
R = U Σ U H = ∑ i = 1 M λ i u i u i H = [ U S U N ] [ Σ S O O Σ N ] [ U S H U N H ] = U S Σ S U S H + U N Σ N U N H \begin{equation*} \begin{aligned} \mathbf{R} &= \mathbf{U} \Sigma \mathbf{U}^H = \sum\limits_{i=1}^M \lambda_i \mathbf{u}_i \mathbf{u}_i^H \\ &= \begin{bmatrix} \mathbf{U}_S & \mathbf{U}_N \end{bmatrix} \begin{bmatrix} \Sigma_S & \mathbf{O} \\ \mathbf{O} & \Sigma_N \end{bmatrix} \begin{bmatrix} \mathbf{U}_S^H \\ \mathbf{U}_N^H \end{bmatrix} \\ &= \mathbf{U}_S \Sigma_S \mathbf{U}_S^H + \mathbf{U}_N \Sigma_N \mathbf{U}_N^H \end{aligned} \end{equation*} R=UΣUH=i=1MλiuiuiH=[USUN][ΣSOOΣN][USHUNH]=USΣSUSH+UNΣNUNH
其中 λ i \lambda_i λi u i \mathbf{u}_i ui 分别为特征值和对应的特征向量, O \mathbf{O} O 为全零矩阵, Σ \Sigma Σ 为由 M M M 个特征值 λ 1 , ⋯   , λ M \lambda_1, \cdots, \lambda_M λ1,,λM 组成的对角矩阵:
Σ S = diag ⁡ { λ 1 , ⋯   , λ M } \begin{equation*} \Sigma_S = \operatorname{diag} \{\lambda_1, \cdots, \lambda_M\} \end{equation*} ΣS=diag{λ1,,λM}
且假设:
λ 1 > λ 2 > ⋯ > λ K > λ K + 1 > ⋯ > λ M = σ n 2 \begin{equation*} \lambda_1 > \lambda_2 > \cdots > \lambda_K > \lambda_{K+1} > \cdots > \lambda_M = \sigma_n^2 \end{equation*} λ1>λ2>>λK>λK+1>>λM=σn2
Σ S \Sigma_S ΣS 为由 K K K 个较大特征值 λ 1 , ⋯   , λ K \lambda_1, \cdots, \lambda_K λ1,,λK 组成的对角矩阵, Σ N \Sigma_N ΣN 为由 M − K M-K MK 个较小特征值 λ K + 1 , ⋯   , λ M \lambda_{K+1}, \cdots, \lambda_M λK+1,,λM 组成的对角矩阵:
Σ S = diag ⁡ { λ 1 , ⋯   , λ K } , Σ N = diag ⁡ { λ K + 1 , ⋯   , λ M } \begin{equation*} \Sigma_S = \operatorname{diag} \{\lambda_1, \cdots, \lambda_K\}, \Sigma_N = \operatorname{diag} \{\lambda_{K+1}, \cdots, \lambda_M\} \end{equation*} ΣS=diag{λ1,,λK},ΣN=diag{λK+1,,λM}
U S \mathbf{U}_S US 表示由 K K K 个较大特征值 λ 1 , ⋯   , λ K \lambda_1, \cdots, \lambda_K λ1,,λK 对应的特征矢量张成的信号子空间, U N \mathbf{U}_N UN 表示由 M − K M-K MK 个较小特征值 λ K + 1 , ⋯   , λ M \lambda_{K+1}, \cdots, \lambda_M λK+1,,λM 对应的特征矢量张成的噪声子空间。注意, U \mathbf{U} U 为酉矩阵。
  将 R = A R S A H + σ n 2 I \mathbf{R} = \mathbf{A}\mathbf{R}_S\mathbf{A}^H + \sigma_n^2\mathbf{I} R=ARSAH+σn2I 左右两边乘以 U N \mathbf{U}_N UN 可得:
R U N = A R S A H U N + σ n 2 U N \begin{equation*} \mathbf{R}\mathbf{U}_N = \mathbf{A}\mathbf{R}_S\mathbf{A}^H \mathbf{U}_N+ \sigma_n^2\mathbf{U}_N \end{equation*} RUN=ARSAHUN+σn2UN
  同时将 R = U S Σ S U S H + U N Σ N U N H \mathbf{R} =\mathbf{U}_S \Sigma_S \mathbf{U}_S^H + \mathbf{U}_N \Sigma_N \mathbf{U}_N^H R=USΣSUSH+UNΣNUNH 左右两边乘以 U N \mathbf{U}_N UN 可得:
R U N = U S Σ S U S H U N + U N Σ N U N H U N = O + σ n 2 U N = σ n 2 U N \begin{equation*} \mathbf{R}\mathbf{U}_N = \mathbf{U}_S \Sigma_S \mathbf{U}_S^H\mathbf{U}_N + \mathbf{U}_N \Sigma_N \mathbf{U}_N^H\mathbf{U}_N = \mathbf{O} + \sigma_n^2 \mathbf{U_N} = \sigma_n^2 \mathbf{U_N} \end{equation*} RUN=USΣSUSHUN+UNΣNUNHUN=O+σn2UN=σn2UN
  联立上面两式子可得:
A R S A H U N = O \begin{equation*} \mathbf{A}\mathbf{R}_S\mathbf{A}^H \mathbf{U}_N = \mathbf{O} \end{equation*} ARSAHUN=O
  由于 R S \mathbf{R}_S RS A H A \mathbf{A}^H \mathbf{A} AHA 均满秩,所以均可逆,因此上式两边同时乘以 R S − 1 ( A H A ) − 1 A H \mathbf{R}_S^{-1} (\mathbf{A}^H\mathbf{A})^{-1} \mathbf{A}^H RS1(AHA)1AH 可得:
R S − 1 ( A H A ) − 1 A H A R S A H U N = R S − 1 ( A H A ) − 1 A H O \begin{equation*} \mathbf{R}_S^{-1} (\mathbf{A}^H\mathbf{A})^{-1} \mathbf{A}^H\mathbf{A}\mathbf{R}_S\mathbf{A}^H \mathbf{U}_N = \mathbf{R}_S^{-1} (\mathbf{A}^H\mathbf{A})^{-1} \mathbf{A}^H\mathbf{O} \end{equation*} RS1(AHA)1AHARSAHUN=RS1(AHA)1AHO
化简得:
A H U N = O \begin{equation*} \mathbf{A}^H \mathbf{U}_N = \mathbf{O} \end{equation*} AHUN=O
或者可以写成如下形式:
A H u i = 0 , i = K + 1 , ⋯   , M \begin{equation*} \mathbf{A}^H\mathbf{u}_i = \mathbf{0}, i = K+1, \cdots, M \end{equation*} AHui=0,i=K+1,,M
其中 0 \mathbf{0} 0 为全零向量。上式表明:噪声特征值所对应的特征向量 u i \mathbf{u}_i ui 与方向矢量矩阵 A \mathbf{A} A 的列向量正交,而 A \mathbf{A} A 的各列与信号源的方向相对应的,因此可以利用噪声子空间求解信号源方向。

2.2 算法步骤

  MUSIC 算法步骤如下(输入为阵列接收矩阵 X \mathbf{X} X):

  1. 计算协方差矩阵 R = 1 T X X H \mathbf{R} = \frac{1}{T} \mathbf{X}\mathbf{X}^H R=T1XXH
  2. R \mathbf{R} R 进行特征值分解,并对特征值进行排序,然后取得 M − K M-K MK 个较小特征值对应的特征向量来组成噪声子空间 U N \mathbf{U}_N UN
  3. 以下式遍历 θ = 0 ∘ , 1 ∘ ⋯   , 18 0 ∘ \theta = 0^{\circ}, 1^{\circ} \cdots, 180^{\circ} θ=0,1,180
    P ( θ ) = 1 a H ( θ ) U N U N H a ( θ ) \begin{equation*} P(\theta) = \frac{1}{\mathbf{a}^H(\theta)\mathbf{U}_N\mathbf{U}_N^H\mathbf{a}(\theta)} \end{equation*} P(θ)=aH(θ)UNUNHa(θ)1
    此时得到一组 P ( θ ) P(\theta) P(θ) K K K 个最大值对应的 θ \theta θ 就是需要返回的结果。

2.3 代码实现

% 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');                           % 添加噪声

%% 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';
% 空间谱搜索
searchGrids = 0.1;                                    % 搜索间隔
ang = (-90:searchGrids:90)*derad;
Pmusic = zeros(1, length(ang));                       % 空间谱
for i = 1:length(ang)
    a = exp(-1j*pi*idx*sin(ang(i)));
    Pmusic(:, i) = 1/(a'*Gn*a);
end
% 归一化处理,单位化为 db
Pmusic = abs(Pmusic);
Pmusic = 10*log10(Pmusic/max(Pmusic));
% 作图
figure;
plot(ang/derad, Pmusic, '-', 'LineWidth', 1.5);
set(gca, 'XTick',(-90:30:90));
xlabel('\theta(\circ)', 'FontSize', 12, 'FontName', '微软雅黑');
ylabel('空间谱(dB)', 'FontSize', 12, 'FontName', '微软雅黑');
% 找出空间谱Pmusic中的峰值并得到其对应角度
[pks, locs] = findpeaks(Pmusic);                      % 找极大值
[pks, id] = sort(pks);
locs = locs(id(end-K+1:end))-1;
Theta = locs*searchGrids - 90;
Theta = sort(Theta);
disp('估计结果:');
disp(Theta);

2.4 参考内容

  1. 【博客园】子空间分析方法
  2. 【博客园】空间谱专题10:MUSIC算法
  3. 【CSDN】子空间方法——MUSIC算法
  4. 【CSDN】Traditional Comm笔记【5】:基于MUSIC Algorithm的DoA/AoA估计以及MATLAB实现
  5. 【知乎】DoA 估计:多重信号分类 MUSIC 算法(附 MATLAB 代码)
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值