基于正交匹配追踪算法的信号稀疏分解与重构系统
项目介绍
本项目实现了一个基于正交匹配追踪(Orthogonal Matching Pursuit, OMP)算法的压缩感知信号重构系统。OMP作为一种经典的贪婪算法,旨在从少量的线性观测值中精确恢复出高维的稀疏信号。系统通过在过完备字典中迭代寻找最匹配的原子,并利用正交投影技术确保每步迭代的最优性,从而实现信号的精确重构。
功能特性
- 稀疏信号自动生成:系统能够构建预排稀疏度的随机信号,模拟真实的稀疏观测场景。
- 高斯随机测量矩阵构建:支持生成符合受限等距性质(RIP)的高斯随机矩阵,并内置了矩阵列规范化处理。
- 高效OMP核心算法:集成了完整的归纳式OMP迭代逻辑,包含相关性计算、原子选择、最小二乘法求解及残差更新。
- 全方位性能评估:自动计算重构信号的均方误差(MSE)与信噪比(SNR),定性定量的评估重构质量。
- 直观结果可视化:提供原始信号与重构信号的时域对比图,以及算法收敛过程的残差能量变化曲线。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:标准桌面或笔记本电脑,无需特殊计算模块。
- 依赖项:无需第三方工具箱,仅需MATLAB核心组件。
信号重构系统实现逻辑
本项目通过一个完整的处理流程演示了从采样到重构的全过程:
- 重构系统初始化:
系统首先定义信号的总长度(N=256)、观测后的维度(M=120)以及信号的初始稀疏度(K=15)。这一设置模拟了在信息大幅度压缩的情况下进行重构的情境。
- 观测模型建立:
在采样前,系统在随机位置生成具有标准正态分布幅值的K个非零元素,构成原始稀疏信号。随后,构建一个高斯随机测量矩阵,并对该矩阵的每一列进行单位范数归一化处理。通过测量矩阵与原始信号相乘,获取低维的观测向量(y)。
- OMP核心迭代过程:
算法进入核心重构阶段,循环执行以下五个步骤:
- 相关性扫描:计算当前残差与测量矩阵中每一列(原子)的内积,以此评估相关性。
- 原子辨识:选取相关性绝对值最大的原子索引,并将其加入已选原子集合。
- 最小二乘投影:基于当前所有已选原子,利用最小二乘法(左除运算)在选定的子空间中搜索最优的系数估计值。
- 残差更新:从原始观测向量中减去当前已选原子集合与对应系数的乘积,得到新的残差,该残差与已选原子保持正交。
- 状态记录:记录每一步迭代后的残差范数,用于分析收敛性能。
- 信号转换与计算:
将迭代得到的最优系数映射回原始N维空间,恢复出重构后的稀疏向量。
- 评估与展示:
系统计算重构向量与原始向量之间的MSE和SNR。最后,通过图形窗口展示信号重构的拟合程度以及残差随迭代次数下降的趋势。
关键函数与实现细节分析
- 矩阵归一化逻辑:在构建测量矩阵阶段,代码通过循环对矩阵的每一列执行 norm 运算并除以其模值。这一步骤对于保证能量在变换过程中的稳定性以及确保原子选择的公平性至关重要。
- 相关性匹配机制:在 OMP 核心逻辑中,通过 A' * res 运算一次性计算残差与所有原子的相关性,利用绝对值最大化原则快速锁定贡献最大的信号分量。
- 正交投影求解:通过 A_sub y 的实现方式,系统在每次迭代时不仅仅是更新一个新的系数,而是重新计算所有已选原子的最优权重。这保证了在已知支撑集下的残差最小化,是 OMP 优于普通匹配追踪(MP)算法的核心点。
- 收敛性记录:res_norm_history 数组实时存储了每次迭代后的残差 L2 范数,这为开发者观察算法是否正常收敛提供了直观的数学依据。
- 性能指标定量化:MSE 计算公式反映了重构信号与原始信号的平均偏离程度,而 SNR 则以分贝(dB)为单位反映了信号重构的精确度和抗噪能力。