1. 项目概述
在阵列信号处理领域,波达方向(DOA)估计一直是个经典问题。传统基于网格的方法存在"网格失配"问题,而无网格方法通过连续参数空间建模能有效解决这一痛点。这个项目实现了两种创新性无网格DOA估计方案:基于最大似然估计(MLE)的结构化协方差恢复方法和稀疏贝叶斯学习(SBL)网格细化技术。
实测表明,相比传统MUSIC和Capon算法,我们的方法在低信噪比(SNR)、小快拍数场景下仍能保持优异的估计精度。特别是在信号源角度间隔小于瑞利限时,仍可实现稳定分辨。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法原理
2.1 结构化协方差恢复方法
传统DOA估计依赖样本协方差矩阵,但在小样本情况下会出现性能恶化。我们通过构建如下结构化协方差模型:
R(θ) = A(θ)PA^H(θ) + σ^2I
其中:
- A(θ) = [a(θ1),...,a(θK)] 为阵列流形矩阵
- P = diag(p1,...,pK) 为信号功率矩阵
- σ^2 为噪声功率
通过最大似然估计求解以下优化问题:
min ||R̂ - R(θ)||_F^2
其中R̂为样本协方差矩阵。我们采用交替优化策略:
- 固定θ,更新P和σ^2
- 固定P和σ^2,更新θ
2.2 SBL网格细化技术
稀疏贝叶斯学习通过层级先验构建稀疏模型:
p(y|α) = ∫ p(y|x)p(x|α)dx
其中α为超参数,控制x的稀疏性。我们采用以下迭代步骤:
- 初始化:在粗网格上构建字典矩阵A
- E-step:计算后验均值μ和协方差Σ
- M-step:更新超参数α
- 网格细化:在非零支撑附近加密网格
- 重复2-4直至收敛
3. MATLAB实现详解
3.1 结构化协方差恢复实现
matlab复制function [theta_est, P_est, sigma2_est] = structured_cov_doa(X, theta_init)
% X: N x M 数据矩阵 (N阵元, M快拍)
% theta_init: 初始角度猜测
[N, M] = size(X);
R_hat = X*X'/M; % 样本协方差
% 交替优化
max_iter = 100;
