基于非负矩阵分解(NMF)的盲源分离仿真系统
项目介绍
本项目是一款基于非负矩阵分解(NMF)理论的盲源分离(BSS)仿真实验平台。非负矩阵分解通过将非负观测矩阵分解为基矩阵与系数矩阵的乘积,利用非负性约束实现了具有物理意义的局部构成整体的解释性。系统通过合成非负信号的混合与分离实验,直观地展示了非负矩阵分解在信号处理领域的应用潜力,是研究和学习盲源分离算法的基础工具。
功能特性
- 交互式图形界面:系统配备了完整的GUI界面,集成了参数设置、数据生成、算法执行与结果展示功能。
- 合成数据生成:内置预设的非负源信号生成逻辑,包括周期性波形、脉冲波形及随机衰减波形,并支持通过预设矩阵进行线性混合。
- 标准乘法更新算法:实现了经典的基于欧氏距离(Euclidean Distance)的乘法更新规则(MUR),确保分解过程的收敛性。
- 实时动态监控:算法运行过程中会实时计算并记录Frobenius范数误差,并动态展示收敛曲线。
- 结果可视化对比:系统同步展示原始源信号、混合观测信号以及分离后的信号,并提供信号幅度的归一化处理以便于对比。
使用方法
- 启动程序:在MATLAB环境下运行主函数,弹出仿真系统主界面。
- 参数设置:在左侧控制面板中输入分解秩(k)和最大迭代次数(默认值分别为3和500)。
- 生成信号:点击“生成/重置信号”按钮,系统将自动生成三路源信号并根据预设矩阵混合,界面将展示混合后的观测矩阵 V 和原始源信号参考。
- 执行分解:点击“运行NMF分解”按钮,算法开始迭代计算。命令行将实时输出迭代进度与误差。
- 结果分析:观察“分离出的源信号”波形与“算法收敛轨迹”曲线,评价分离效果。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件环境:支持图形化显示的通用计算机。
实现逻辑与功能细节
#### 1. 数据生成逻辑
系统通过数学公式构造了三路具有不同特征的非负信号:
- 信号1:取绝对值的正弦波形,代表周期性连续信号。
- 信号2:占空比为0.5的脉冲信号,代表间歇性触发信号。
- 信号3:带有随机包络的指数衰减信号,代表非平稳随机信号。
系统使用一个 4x3 的固定非负混合矩阵 A 将 3 路源信号混合为 4 路观测信号,构造出超定盲源分离问题的观测矩阵 V。
#### 2. NMF 核心算法实现
算法核心基于最小化目标函数 ||V - WH||_F(Frobenius 范数),采用如下迭代逻辑:
- 初始化:使用均匀分布的随机数初始化基矩阵 W 和系数矩阵 H。
- H 矩阵更新:利用 W 的转置与 V 的乘积作为分子,W'WH 作为分母进行逐元素更新。
- W 矩阵更新:利用 V 与 H 的转置乘积作为分子,WHH' 作为分母进行逐元素更新。
- 数值稳定性:在更新公式的分母中引入了 1e-9 的微小偏移量,有效避免了除零异常。
#### 3. 结果后处理逻辑
由于 NMF 存在尺度不确定性(Scaling Ambiguity),系统在分解完成后对系数矩阵 H 的每一行进行了归一化处理。通过提取每一行信号的最大值并将该行信号除以该最大值,将分离出的信号振幅统一缩放到 [0, 1] 区间,从而解决了物理量纲不统一的问题,便于与原始信号进行波形相似度对比。
#### 4. GUI 布局与交互控制
界面划分为四个主要的绘图区域和一个控制面板:
- 待处理信号区:展示混合后的观测数据 V。
- 分离结果区:动态绘制算法提取出的系数矩阵 H 的各行波形。
- 收敛轨迹区:以半对数或线性坐标展示迭代误差随次数的变化情况。
- 原始信号区:作为 Ground Truth 供用户直观判断算法的分离准确度。
控制面板通过回调函数机制,实现了参数读取、全局变量状态管理以及界面元素的实时刷新。