基于AIC和MDL准则的远场信号源数目估计仿真系统
项目简介
本项目是一个基于MATLAB开发的仿真系统,旨在解决阵列信号处理中的核心问题——信源数目估计(Source Number Estimation)。系统专注于远场窄带信号场景,采用均匀线阵(ULA)接收模型,在加性高斯白噪声(AWGN)环境下,实现了两种经典的基于信息论的检测算法:Akaike信息准则(AIC)和最小描述长度准则(MDL)。
通过本系统,用户不仅可以直观地观察单一场景下特征值的分布及准则函数的极值搜索过程,还能通过大规模蒙特卡洛仿真,量化分析信噪比(SNR)和快拍数(Snapshots)对算法检测概率的影响,从而评估AIC与MDL算法在不同条件下的性能差异。
功能特性
- 高精度信号建模:基于均匀线阵(ULA)构建接收信号模型,支持自定义阵元数、波长、信源角度及信噪比,模拟真实的复高斯信号与噪声环境。
- 经典估计算法实现:完整实现了Wax和Kailath提出的基于特征结构子空间的AIC和MDL算法。
- 可视化单一场景分析:
* 展示接收数据协方差矩阵的特征值分布(降序排列)。
* 绘制随假设信源数变化的AIC和MDL准则函数曲线,并自动标记最小值点(即估计的信源数)。
*
检测概率 vs SNR:在固定快拍数下,扫描不同信噪比(-10dB至20dB),统计并对比两种算法的正确检测概率。
*
检测概率 vs 快拍数:在固定信噪比下,评估数据长度(快拍数从20到1000)对估计性能的影响。
系统要求
- MATLAB R2016a 或更高版本(代码仅使用基础函数,无需特殊工具箱,但在较新版本中绘图效果更佳)。
使用方法
直接运行主程序即可启动仿真。程序将依次执行以下流程:
- 初始化物理参数和仿真参数。
- 单一场景演示:生成一组信号,计算并绘制特征值分布图以及AIC/MDL曲线图。
- SNR性能分析:进行长时间的蒙特卡洛实验,计算不同信噪比下的检测概率,并生成对比曲线图。
- 快拍数性能分析:进行长时间的蒙特卡洛实验,计算不同快拍数下的检测概率,并生成对比曲线图。
详细功能实现逻辑
本项目的主程序通过三个主要部分展示了算法的原理与性能,具体逻辑如下:
1. 参数与环境配置
程序首先定义了物理环境,默认设置为8阵元的均匀线阵,波长为1,阵元间距为半波长。预设了3个来自不同角度(-10°, 15°, 40°)的远场信源。仿真参数包括默认快拍数200、信噪比5dB,以及用于统计性能的500次蒙特卡洛实验。
2. 单一场景下的算法演示
此模块演示了单次实验的完整处理流程:
- 信号生成:调用信号生成函数,根据预设角度和信噪比产生接收数据矩阵。
- 协方差分析:计算采样协方差矩阵,并对其进行特征值分解。提取特征值序列并按降序排列,这是子空间方法的基础。
- 准则计算:根据特征值序列计算每一个可能的假设信源数(从0到M-1)对应的AIC和MDL值。
- 结果可视化:创建一个包含两个子图的窗口。第一个子图展示特征值的幅度分布,辅助观察信号子空间与噪声子空间的分界;第二个子图绘制AIC和MDL随假设信源数变化的曲线,并在曲线上通过特殊符号(五角星)标记出最小值位置,直观展示算法对信源数目的估计结果。控制台会同时输出真实的信源数及两种算法的估计值。
3. 蒙特卡洛性能分析:检测概率 vs SNR
此模块旨在评估噪声水平对算法的影响:
- 程序设定SNR变化范围为-10dB至20dB。
- 在每个SNR点上,重复进行500次独立实验。
- 每次实验中重新生成噪声和信号,计算协方差矩阵特征值,并利用AIC和MDL算法进行估计。
- 统计估计值完全等于真实信源数(K=3)的次数,计算正确检测概率。
- 最终绘制“信噪比-检测概率”曲线,红色曲线代表AIC,蓝色曲线代表MDL。该分析通常显示在信噪比较高时,两种算法均能达到高检测率,而在低信噪比下性能会有所下降。
4. 蒙特卡洛性能分析:检测概率 vs 快拍数
此模块旨在评估数据样本量对算法一致性的影响:
- 程序固定信噪比(例如0dB),选取一系列快拍数(20, 50, 100, 200, 500, 1000)。
- 对每个快拍数长度,重复500次实验。
- 统计并计算正确检测概率。
- 最终绘制“快拍数(对数坐标)-检测概率”曲线。该图表直观展示了随着数据量的增加,估计算法(特别是MDL)收敛到真实值的能力。
关键算法与实现细节
代码中包含两个核心的子功能模块,其算法实现细节如下:
信号生成模块
该模块负责构建ULA接收模型 $X = AS + N$。
- 导向矢量构建:根据输入角度和半波长间距,构建理想的ULA流形矩阵 $A$。
- 信号与噪声模拟:信号源 $S$ 和噪声 $N$ 均被模拟为复高斯随机过程。
- 信噪比控制:为了精确控制SNR,程序首先生成单位功率的信号,然后根据 $SNR = 10log_{10}(P_s/P_n)$ 的公式计算所需的噪声功率,并对生成的归一化噪声矩阵进行幅度缩放,确保混合后的信号满足指定的信噪比要求。
AIC与MDL准则计算模块
该模块基于Wax & Kailath (1985) 的经典论文实现。函数接收排序后的特征值,遍历假设信源数 $k$(从0到阵元数-1),计算对应的判决函数值:
- 似然比统计量:核心计算依赖于噪声子空间特征值(即第 $k+1$ 个到最后一个特征值)的算术平均值与几何平均值之比的对数。这一项反映了剩余特征值的相等程度(球形度)。
- 自由度惩罚项:
*
AIC:惩罚项为 $2 times k(2M-k)$。AIC倾向于选择较复杂的模型,因此在小快拍数下可能表现较好,但在大样本下可能出现过估计(不一致性)。
*
MDL:惩罚项为 $0.5 times k(2M-k) times log(N)$。引入了快拍数 $N$ 的对数项,使得MDL在大样本下具有一致性估的性质,通常在高SNR或大快拍数下比AIC更准确,且不会过估计。
- 极值搜索:函数最后通过寻找AIC和MDL向量中的最小值索引,确定最终的估计信源数。代码中包含具体的数值稳定性处理,防止因几何平均值为0导致的对数计算错误。