基于多算法融合的压缩感知信号重构系统
项目介绍
本项目是一个专门用于压缩感知(Compressed Sensing, CS)研究的仿真与实验平台。系统完整地模拟了压缩感知的全过程,包括信号的稀疏化表示、观测矩阵的构建、受限采样过程以及高性能重构算法的实现。通过该平台,用户可以深入研究不同观测维度(M)、信号稀疏度(K)以及重构算法对信号恢复质量的影响,实现对非稠密信号在远低于奈奎斯特采样率下的精确获取。
功能特性
- 多类型稀疏变换:系统内置了离散余弦变换(DCT)矩阵生成功能,能够将非稀疏的时域信号映射到稀疏域进行处理。
- 多样化观测矩阵:集成了高斯随机矩阵(Gaussian)、伯努利随机矩阵(Bernoulli)以及部分哈达玛矩阵(Hadamard)的构建方法,满足不同应用场景下的降维投影需求。
- 双重重构算法实现:同步实现了贪婪类算法中的代表——正交匹配追踪(OMP),以及基于平滑函数逼近的非凸优化算法——平滑L0范数重构(SL0)。
- 自动化性能评估:提供均方误差(MSE)、信噪比(SNR)和执行耗时等多维度量化指标。
- 鲁棒性统计分析:具备重构成功率对比功能,通过改变观测值数量(M)并进行多次重复实验,自动生成算法收敛性能曲线。
- 多维结果可视化:提供原始信号与重构信号的对比图、重构残差分布图以及成功率随采样率变化的统计图。
系统逻辑与流程说明
系统的主执行逻辑严格遵循以下步骤:
- 初始化与参数设定:设定原始信号长度(N=256)、信号稀疏度(K=30)、初始观测维度(M=100)等关键实验参数。
- 信号构建:在DCT域生成一个随机分布的K稀疏系数向量,并通过逆变换构建对应的时域测试信号。
- 字典与观测矩阵生成:生成离散余弦变换基矩阵,并根据选定的类型(如Gaussian)构建观测矩阵。
- 压缩采样:将观测矩阵作用于原始信号得到低维测量值,模拟传感器获取数据的过程。同时构建合成传感矩阵。
- 信号重构执行:
* 调用OMP算法,通过迭代寻找对应支撑集并进行最小二乘投影来估计稀疏系数。
* 调用SL0算法,利用高斯平滑序列逐步逼近L0范数,通过最速下降法和可行域投影恢复信号。
- 性能量化:对比原始信号与重构信号,计算各项指标并在命令行输出结果分析。
- 成功率扫描实验:设定一系列递进的观测值数量(M从40至200),在每个测量点执行多次随机独立实验。根据重构系数的相对误差(阈值0.01)判定是否成功,最后统计各算法的成功率。
- 绘图展示:生成四块画布,分别展示两种算法的波形恢复效果、SL0算法的残差细节以及两种算法的成功率性能对比曲线。
关键算法与实现细节分析
1. 稀疏基与观测矩阵
- 离散余弦变换 (DCT):通过数学公式直接构造正交矩阵,用于信号的稀疏变换。
- 观测矩阵构建:
*
高斯矩阵:生成标准正态分布随机数并进行能量归一化。
*
哈达玛矩阵:通过生成2的幂次阶矩阵并随机抽取行向量,实现确定性与随机性的结合。
2. 正交匹配追踪算法 (OMP)
该算法采用贪婪搜索策略:
- 相关性分析:每一轮迭代计算传感矩阵各列与当前残差的内积,以此选入最匹配的原子。
- 支撑集更新:记录选入原子的索引。
- 最小二乘更新:在当前选定的原子子空间内,通过最小二乘法更新待重构系数,并同步更新残差,确保残差与已选原子正交。
3. 平滑L0范数算法 (SL0)
该算法属于非凸优化方法:
- 初始化:通过计算伪逆获得最小L2范数解作为起点。
- 平滑策略:利用一系列递减的平滑参数(sigma序列),使用高斯函数族来逼近L0范数。
- 两步迭代:
*
最速下降:在当前平滑参数下,沿梯度方向减少目标函数值。
*
投影算子:将迭代结果重新投影回满足观测方程的线性空间,确保结果符合物理测量。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:由于涉及多次迭代实验和矩阵运算,建议内存不低于8GB。
- 工具箱要求:无需特殊工具箱,项目使用纯MATLAB函数(如
randn, hadamard, plot)实现。
使用方法
- 在MATLAB中定位到代码所在目录。
- 在命令行输入主函数名并回车。
- 系统将自动开始计算并在控制台输出OMP与SL0的指标数据。
- 计算完成后,系统会自动弹出可视化图形窗口。
- 如需测试不同的观测矩阵,可修改代码中关于变量类型设置的部分('Gaussian', 'Bernoulli' 或 'Hadamard')。