基于奇异值分解与L1范数正则化的压缩感知DOA估计算法
项目介绍
本项目实现了一种基于压缩感知(Compressed Sensing, CS)理论的阵列信号波达方向(Direction of Arrival, DOA)估计算法。该算法结合了奇异值分解(SVD)降维技术与L1范数正则化重构方法,旨在解决均匀线性阵列(ULA)环境下的窄带远场信号方位估计问题。通过将连续的角度空间离散化为过完备字典,该方法将空间谱估计转化为稀疏信号修复问题,有效提升了在低信噪比及少快拍条件下的空间分辨率和估计精度。
功能特性
- 高分辨率估计:利用压缩感知的稀疏重构特性,能够实现超越传统算法(如MUSIC)的空间分辨能力。
- 计算优化:引入SVD预处理技术,从多快拍接收数据中提取信号子空间,大幅降低了重构算法的运算维度。
- 鲁棒性强:采用ADMM(交替方向乘子法)求解L1范数最小化问题,能够有效抑制高斯白噪声的干扰。
- 自动化性能评估:内置蒙特卡洛实验模块,自动分析并绘制均方根误差(RMSE)随信噪比(SNR)变化的规律。
- 直观可视化:提供包括空间重构谱、真实角度对比、RMSE演化曲线以及详细参数统计在内的多维度可视化结果。
核心实现逻辑
项目通过一个完整的仿真流程实现从信号产生到结果评估的全过程:
- 信号模型建立:模拟生成均匀线性阵列(ULA)的接收数据。设定阵元数、信号源数量及其对应的入射角度。通过阵列流型矩阵与复高斯激励信号合成原始数据,并叠加指定SNR的加性白高斯噪声。
- SVD降维预处理:对原始M×L维度的接收信号矩阵执行奇异值分解。提取前K个主要奇异值对应的左奇异向量,将数据投影到信号子空间,构造降维后的观测矩阵,从而在保留信号特征的同时减少计算开销。
- 过完备字典构造:在-90度至90度的范围内按设定步长进行网格划分,预计算每个格点对应的阵列流型向量,构建高冗余度的测量矩阵(原子库)。
- 稀疏重构算法:采用交替方向乘子法(ADMM)求解L1范数优化问题。通过迭代更新原始变量(最小二乘解)、辅助变量(执行软阈值收缩算子操作)和对偶变量,寻找在冗余字典下的最稀疏解。
- 谱峰搜索与角度估计:对重构后的稀疏向量计算能量分布,生成空间重构谱。利用找峰算法定位谱峰,提取出估计的信号入射角度。
- 性能度量:进行多组蒙特卡洛实验,计算不同信噪比水平下的均方根误差,并统计重构残差以评估算法的一致性。
关键算法与实现细节
- 奇异值分解(SVD):作为降维核心,通过提取主要特征向量,将原本依赖于大量快拍的计算过程转化为针对核心特征向量的稀疏恢复过程。
- L1范数最小化:将DOA估计建模为凸优化问题,通过约束L1范数来诱导解的稀疏性,从而在角域中精确识别信号源位置。
- ADMM算法迭代:
- 更新步骤一:利用矩阵逆运算求解最小二乘问题,更新重构矩阵。
- 更新步骤二:应用软阈值算子(Soft-thresholding)处理复数域数据,实现L1范数的近端映射。
- 停止准则:基于Frobenius范数的变量更新差值作为收敛判据。
- 空间能量积分:针对多列重构结果,通过计算行向量的模值平方和来确定信号在空间角度上的功率分布。
使用方法
- 在环境中打开代码文件。
- 根据实际需求调节参数部分(如阵元数、预设角度、信噪比范围等)。
- 运行脚本,程序将自动执行信号建模、SVD降维、ADMM重构分析。
- 查看输出结果窗口:
- 上方图表展示空间稀疏谱与真实角度的匹配度。
- 左下方图表展示随着SNR增加,RMSE的下降趋势。
- 右下方区域显示估计的具体度数、相对残差及系统配置信息。
- 控制台同步输出具体的估计数值对照表。
系统要求
- 运行环境:MATLAB R2016a 或更高版本。
- 所需工具箱:Signal Processing Toolbox(用于信号处理及找峰函数)。
- 硬件建议:建议内存4GB以上,以支持大网格密度的矩阵运算。