基于联合向前正交追踪的分布式压缩感知重构系统
项目简介
本项目在 MATLAB 环境中完整实现了一种针对分布式压缩感知(DCS)的高级信号重构算法——联合向前正交追踪(Joint Look Ahead Orthogonal Matching Pursuit, JLAOMP)。该系统专门用于解决多测量向量(MMV)问题,利用多通道信号共享稀疏支撑集(Joint Sparsity, JSM-2模型)的特性,通过引入“向前看(Look Ahead)”机制来优化原子选择过程,从而显著提升信号恢复的精度。
功能特性
本项目集成了数据生成、算法实现、对比测试与可视化评估的全流程功能:
- 分布式压缩感知数据生成
基于联合稀疏模型(JSM-2),生成具有共同稀疏支撑集的多通道原始信号。支持自定义信号长度、观测维度(测量数)、稀疏度、通道数(L)以及信噪比(SNR)。
- 核心算法实现:JLAOMP
实现了改进的贪婪算法 JLAOMP。与传统算法不同,该算法在每次迭代时不单纯依赖最大相关性系数,而是遍历所有候选原子,预先计算加入该原子后的最小二乘投影残差,选择能使全局逼近误差最小化的原子。
- 基准算法对比:SOMP
内置同步正交匹配追踪(SOMP)算法作为性能参照基准,用于对比传统贪婪策略与 Look Ahead 策略在重构性能上的差异。
- 多维度性能评估
包含三组完整的仿真实验:
*
单次重构演示:展示时域波形恢复情况、残差收敛曲线及支撑集恢复热力图。
*
测量数(M)鲁棒性测试:分析在不同压缩率下算法的均方误差(MSE)和重构成功率。
*
抗噪性能(SNR)测试:分析在不同信噪比环境下算法的重构误差表现。
- 自动化结果可视化
仿真结束后自动生成对比波形图、收敛曲线、支撑集对比图以及 MSE/成功率统计曲线,便于直观评估算法优劣。
系统要求
- MATLAB R2016a 或更高版本
- Signal Processing Toolbox(可选,用于部分高级信号处理,但本项目主要利用基础矩阵运算)
- 统计与机器学习工具箱(用于部分随机数生成逻辑)
使用方法
直接运行主程序即可启动全流程仿真。程序将依次执行初始化、参数配置、单次重构演示、蒙特卡洛批量性能测试(包括针对不同测量数 M 和不同信噪比 SNR 的循环测试),并在所有计算完成后弹出多个可视化图表窗口。默认配置下,为了保证统计结果的可靠性,程序会执行一定次数的蒙特卡洛实验,因此运行可能需要几分钟时间。
详细实现逻辑与代码分析
1. 初始化与参数配置
程序首先固定随机数种子以确保实验结果的可复现性。定义了关键的系统参数:
- 信号长度 N = 128
- 默认观测维度 M = 64
- 稀疏度 K = 12
- MMV通道数 L = 4
- 蒙特卡洛仿真次数 = 50
2. 生成多测量向量(MMV)数据
通过内部辅助函数实现 JSM-2 模型的构建:
- 测量矩阵构建:生成高斯随机矩阵并进行列归一化处理。
- 信号生成:随机选取 K 个位置作为所有通道共享的支撑集,并在这些位置上生成符合高斯分布的非零系数值。
- 观测与噪声:通过矩阵乘法获得无噪观测值,并根据设定的 SNR 添加高斯白噪声。
3. 请重构算法逻辑
#### 算法一:同步正交匹配追踪 (SOMP)
这是经典的基准算法。其实现逻辑如下:
- 计算测量矩阵与当前残差的相关性矩阵。
- 计算相关性矩阵每一行的联合能量(行范数平方和)。
- 贪婪地选择能量最大的原子索引加入支撑集。
- 使用最小二乘法进行正交投影更新系数和残差,直到达到稀疏度 K 或残差足够小。
####
算法二:联合向前正交追踪 (JLAOMP - 核心)
这是本项目的核心算法,其逻辑比 SOMP更为精细:
- 候选集遍历:在每次迭代中,不直接选择相关性最大的原子,而是遍历当前所有未被选中的候选原子。
- 向前看机制 (Look Ahead):对于每一个候选原子,将其暂时加入支撑集,构建临时的子字典。
- 全局误差测试:利用临时子字典对观测信号进行最小二乘投影,计算投影后的残差能量。
- 最优决策:比较所有候选原子对应的投影残差,选择能够使残差能量最小的那个原子更新正式支撑集。
- 该机制虽然计算量略高于 SOMP,但能有效避免贪婪算法陷入局部最优,显著提高支撑集恢复的准确率。
4. 实验流程
#### 实验一:单次重构演示
- 生成一组固定参数的数据。
- 分别运行 SOMP 和 JLAOMP,记录运行时间。
- 绘制第一个通道的原始信号与重构信号的时域对比图。
- 绘制迭代过程中的残差收敛曲线(F范数)。
- 通过
imagesc 绘制真实支撑集、SOMP恢复支撑集、JLAOMP恢复支撑集的对比图,直观展示漏检和误检情况。
####
实验二:测量数 M 的影响
- 在范围 [40, 90] 内改变测量数 M。
- 对每个 M 值进行多次蒙特卡洛仿真。
- 统计并记录两个指标:
*
均方误差 (MSE):重构信号与原始信号差值的 Frobenius 范数。
*
重构成功率:判断算法恢复的支撑集是否与真实支撑集完全一致。
####
实验三:信噪比 SNR 的影响
- 在范围 [10dB, 40dB] 内改变信噪比。
- 进行蒙特卡洛仿真,主要评估算法在噪声环境下的 MSE 表现,验证算法的鲁棒性。
5. 结果可视化
最终生成的图表包含:
- 单次重构对比图:包含波形、收敛曲线和支撑集位置图。
- 性能综合评估图:
* MSE 随测量数 M 变化的半对数曲线。
* 重构成功率 随测量数 M 变化的百分比曲线。
* MSE 随信噪比 SNR 变化的半对数曲线。
通过这些图表,用户可以清晰地看到 JLAOMP 算法在低测量数和高噪声环境下,相比传统 SOMP 算法具有更低的重构误差和更高的支撑集恢复概率。