Based on the provided source code, here is the detailed README.md file for the project:
基于均匀圆阵的远场二维解相干MUSIC算法仿真系统
项目介绍
本项目是一个专为均匀圆阵(UCA)设计的远场相干信号源二维方向角(DOA)估计仿真系统。在实际复杂的电磁环境中,多径效应常导致入射信号高度相关或完全相干,使得传统的MUSIC算法因信号协方差矩阵秩亏损而失效。本系统通过模式空间变换(Mode Space Transformation)技术,将圆阵的非线性流形映射为具有类均匀线阵(ULA)范德蒙德结构的虚拟阵列,并结合前向-后向空间平滑技术(FB-SS)成功恢复协方差矩阵的秩,实现对相干信号源高精度的方位角(Azimuth)和俯仰角(Elevation)估计。
功能特性
- 物理阵列建模:精确模拟16阵元均匀圆阵的几何结构,考虑阵元半径、波长及空间相位关系。
- 相干信号模拟:支持构造完全相干的信号源,用于验证解相干算法的有效性。
- 模式空间变换:利用相位模式激发(Phase Mode Excitation)理论,将阵元空间数据转换至模式空间,实现流形结构的线性化。
- 解相干预处理:集成前向-后向平滑(Forward-Backward Smoothing)与空间平滑(Spatial Smoothing)逻辑。
- 二维谱峰搜索:在方位角(0-360°)和俯仰角(0-90°)范围内进行精细化格点搜索。
- 性能可视化:提供二维空间功率谱、等高线图、真实值对比图以及信噪比随误差变化的模拟特征曲线。
- 自动化评估:系统自动计算协方差矩阵的秩、测角误差,并判断解相干是否成功。
使用方法
- 环境准备:确保安装有MATLAB R2018a或更高版本,且具备信号处理工具箱。
- 参数配置:在主脚本起始位置可手动修改阵元数、阵列半径、信噪比(SNR)、快拍数以及入射信号的角度(方位和俯仰)。
- 程序运行:直接运行仿真主程序,系统将自动依次执行阵列流形构建、信号产生、去相干处理及谱峰搜索。
- 结果查看:结果将输出至MATLAB控制台(包括真实位置、估计位置和秩的计算结果)并弹出三维功率谱曲线图。
系统要求
- 软件环境:MATLAB (Signal Processing Toolbox)。
- 计算资源:建议内存8GB以上,以支持高密度二维栅格搜索的计算需求。
实现逻辑与算法功能说明
- 阵列初始化与信号建模
系统首先根据设定的频率计算波长和波数,并建立16阵元的均匀圆阵坐标。入射信号预设为三个,其中前两个信号通过比例因子和相位偏移构造为完全相干关系。接收数据加入高斯白噪声以模拟真实环境。
- 模式空间变换 (Phase Mode Excitation)
这是本系统的核心步骤。程序根据阵元数和克希荷夫约束确定最大模式数 M。构建变换矩阵 W,将原始 N 维阵元空间观测矩阵 X 映射到 2M+1 维的模式空间。在模式空间中,圆阵的导向矢量被转化为与第一类贝塞尔函数(Bessel function)相关的形式,其相位部分具有类似于线阵的等差特性。
- 前后向空间平滑解相干
为了解决信号相干导致的协方差矩阵秩亏损:
系统首先计算模式空间的协方差矩阵。
利用反序置换矩阵(J_mat)进行前向-后向处理,初步增强对相干源的抑制能力。
应用空间平滑逻辑,将虚拟的 2M+1 维模式空间阵列划分为多个重叠的子阵,通过子阵协方差矩阵叠加求平均的方法,恢复信号子空间的秩。
- 特征分解与噪声子空间提取
对处理后的平滑协方差矩阵进行特征值分解。系统通过降序排列特征值,根据信号源数量 K 提取对应的噪声子空间矢量。
- 二维谱峰搜索逻辑
搜索范围涵盖了半球空间的方位角和俯仰角。
在搜索过程中,系统实时计算不同俯仰角对应的贝塞尔函数值。
构建模式空间搜索矢量时,仅截取与平滑后子阵维度匹配的部分。
利用定义的谱函数计算各角度点的功率,并寻找极值点从而提取估计的方位角和俯仰角。
- 结果评估与指标输出
系统最后对比真实入射角与最大峰值对应角度,计算方位误差和俯仰误差。同时通过计算平滑后矩阵的秩,定量评估算法是否成功从相干信号中恢复了信号子空间。此外,还模拟生成了不同信噪比下的RMSE曲线,展示系统在复杂噪声环境下的鲁棒性。
关键细节分析
贝塞尔函数处理:程序通过预计算 Besselj 函数,有效提升了二维搜索的计算效率,避免了循环内的重复计算。
模式数限制:代码中严格遵循 M < k*R 的物理限制,确保模式空间变换的数值稳定性,防止高阶模式下噪声被过度放大。
子阵选择:通过设置 sub_size,平衡了测角分辨率与解相干能力之间的矛盾。