最大似然估计中的交替投影(AP)算法仿真项目
项目介绍
本项目提供了一个基于MATLAB的仿真环境,用于研究和评估阵列信号处理中波达方向(DOA)估计的最大似然算法。其核心是交替投影(Alternating Projection, AP)算法,该算法通过将高维的最大似然目标函数优化问题分解为一系列一维搜索过程,从而显著降低了多信号源场景下的计算复杂度。项目模拟了均匀线性阵列(ULA)在加性高斯白噪声环境下的信号接收过程,并对比了算法估计精度与理论克拉美罗界(CRB)。
功能特性
- 多维搜索降维:实现从复杂的多维参数空间搜索向单维交替迭代搜索的转换。
- 逐次初始化策略:通过逐一增加信号源估计的方式,为迭代过程提供可靠的初始值。
- 精细化迭代收敛:支持通过设置最大迭代次数和收敛阈值来控制算法精度。
- 自动化蒙特卡洛仿真:支持在不同信噪比(SNR)条件下自动进行多次独立重复实验。
- 理论界对比分析:内置随机信号模型下的CRB计算功能,用于验证算法的统计性能。
- 可视化演示:提供收敛轨迹的剖面图以及随着信噪比变化的均方根误差(RMSE)曲线。
使用方法
- 环境准备:确保计算机已安装MATLAB R2016b或更高版本。
- 运行仿真:在MATLAB编辑器中打开主程序脚本并点击运行。
- 参数调整:用户可以根据需要修改脚本开头的仿真参数,例如阵元数量、信号源个数、真实入射角度、快拍数以及蒙特卡洛实验次数。
- 结果查看:程序运行结束后将自动弹出两个图窗,分别展示特定信号分配下的似然函数剖面图以及RMSE与CRB的对比曲线。
系统要求
- 软件环境:MATLAB (推荐 R2018a 及以上版本)。
- 硬件要求:基础四核CPU及4GB内存即可流畅运行蒙特卡洛仿真。
实现逻辑与算法流程
程序遵循标准的统计信号处理仿真流程,其具体逻辑步骤如下:
- 信号模型构建:
程序默认模拟一个10阵元的均匀线性阵列,接收两个远场窄带信号。信号源被建模为互不相关的复高斯随机信号。通过阵列流型矩阵、信号矢量以及加性高斯白噪声的叠加,生成观测快拍数据。
- 初始化阶段(逐次搜索):
由于最大似然函数是非凸的,直接迭代容易陷入局部最优。程序首先执行逐次初始化:先假设只有一个信号,在全空间搜索似然函数最大值点;随后固定第一个角度,搜索使两个信号联合投影矩阵迹最大的第二个角度。
- 交替投影迭代阶段:
这是算法的核心。在每一轮迭代中,程序轮流固定其他K-1个信号的角度估计值,构建其导向矢量矩阵的投影矩阵。利用投影矩阵的正交补性质,在1D搜索空间内更新当前第k个信号的角度。该过程不断重复,直到角度更新量小于预设阈值或达到最大迭代次数。
- 统计分析与评估:
程序在不同的信噪比下重复执行上述过程。对于每次实验,计算估计角度与真实角度之间的偏差。最终计算所有实验的均方根误差(RMSE),并将其与通过导向矢量导数矩阵计算得出的克拉美罗界(CRB)进行对数坐标下的对比。
关键技术分析
- 阵列流型矩阵构建:通过导向矢量函数获取不同角度下的空间相位信息,构建M×K维的流型矩阵。
- 投影矩阵运算:利用最小二乘原理,通过 A*inv(A'A)*A' 计算信号子空间的投影矩阵。在迭代更新时,使用正交补投影矩阵 P_perp 将观测数据投影到已知信号成分的正交空间上,从而分离出待估计信号分量。
- 似然函数优化目标:在迭代步中,目标函数被简化为 a' * P_perp * Rxx * P_perp * a / (a' * P_perp * a),该公式代表了当前候选导向矢量与观测信号在该搜索方向上的匹配程度。
- 克拉美罗界(CRB):代码实现了针对随机信号模型的CRB闭式解计算,综合考虑了信号功率密度、噪声功率、快拍数以及导向矢量的空间导数。
- 1D 条件似然剖面:程序通过可视化手段展示了在固定其他信号参数时,目标信号在真实角度附近呈现出的尖锐峰值,验证了降维搜索的有效性。