基于MATLAB的离散信号时频分析系统:Wigner-Ville分布及平滑改进算法实现
项目介绍
本项目是一款专为非平稳离散信号设计的时频分析工具系统。通过对比标准Wigner-Ville分布(WVD)与改进后的平滑伪Wigner-Ville分布(SPWVD),系统能够精准地揭示信号能量随时间与频率变化的动态过程。本项目重点解决了多分量信号在时频分析中存在的交叉项干扰问题,为雷达、机械故障、水声信号等领域的关键特征提取提供了算法验证与可视化方案。
功能特性
- 多分量非平稳信号合成:内置线性调频(LFM)信号生成模型,可模拟复杂的重叠信号环境。
- 瞬时自相关分析:通过计算信号在不同时刻的滞后相关性,捕捉信号的精细时频特征。
- 交叉项抑制技术:通过独立的时域和频域平滑窗口,在损失极小分辨率的前提下显著消除分量间的虚假干扰。
- 量化评估指标:引入基于高阶矩的时频聚集度计算公式,直观评价时频图的清晰度。
- 频率轨迹提取:具备自动峰值检索功能,能够从时频分布中提取主要的瞬时频率演化路径。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:信号处理工具箱(Signal Processing Toolbox,用于Hilbert变换)。
- 硬件要求:标准个人计算设备即可,内存建议4GB及以上。
实现逻辑与步骤
系统运行遵循严谨的数字信号处理流程,具体逻辑如下:
- 信号仿真与预处理
程序首先设定采样率与观察时长,合成两个动态频率变化的线性调频信号。为了消除WVD运算过程中频率轴的负频混叠,系统对合成后的实信号进行希尔伯特变换,将其转化为对应的解析信号。
- 窗函数自适应配置
系统根据信号长度自动估算平滑窗口的尺寸。采用Hamming窗作为基本核函数,其中频率窗口用于控制频率轴的分辨率,时间窗口则专门用于在时间轴方向执行平滑运算。
- 时频分布计算
程序并行执行两套算法:标准WVD算法通过计算每一时刻的瞬时自相关函数并直接进行傅里叶变换得到;SPWVD算法则在自相关函数阶段引入了双重卷积平滑,即先在时间轴进行局部加权平均,再在频率轴加窗抑制旁瓣。
- 性能评估与轨迹识别
对生成的时频矩阵执行聚集度算法,计算能量分布的归一化四阶矩,得出聚集度分值。随后,通过对SPWVD结果进行逐列最大值搜索,定位出能量最强处的频率坐标,形成连续的瞬时频率估计轨迹。
- 结果可视化输出
系统自动生成多幅子图,对比展示信号的时域波形、标准WVD对比图、平滑后的SPWVD图以及提取出的频率轨迹图。
核心算法与函数细节分析
利用相位随时间二次方变化的规律生成LFM信号。通过设置初始频率、终止频率以及总时长,构建出瞬时频率随时间线性漂移的测试基准。
该算法核心在于构建瞬时自相关矩阵。在每个时间点,取正负滞后量范围内的信号乘积。其数学本质是对信号的延迟相乘项进行采样。由于没有进行窗平滑,该算法在处理单分量信号时具有极高的清晰度,但在处理本项目生成的双分量信号时,图中会显示出明显的振荡交叉项。
- 平滑伪Wigner-Ville分布(SPWVD)实现
这是本项目的核心改进。算法在计算自相关项时,引入了一个嵌套循环,对选定时间邻域内的自相关值进行加权求和(时间平滑)。随后再与频率窗口相乘(频率平滑)。这种分离的窗处理机制允许用户独立调节时间与频率的方向分辨率,有效地弱化了WVD中由于二次型非线性特征导致的干涉项。
该算法通过计算时频平面内所有点能量的四阶矩除以二阶矩的平方来获得聚集度。其物理意义在于:当时频能量越集中于一条窄带(即信号轨迹)时,该值越高;当时频图中充满交叉项噪音或扩散时,该值降低。
基于SPWVD生成的高对比度矩阵,算法通过搜索每个时间点(矩阵的列)上幅度最大的频率索引。通过采样索引与实际物理频率的映射关系,将离散的矩阵坐标还原为物理频率值。
使用方法
- 将主函数文件及相关逻辑代码保存在同一MATLAB工作路径下。
- 直接运行主程序函数。
- 系统将通过命令行输出WVD与SPWVD的聚集度指标。
- 观察自动弹出的图形窗口,对比两种分布在处理多分量信号时的清晰度差异。
- 根据实际需求,可以手动调整代码中的g_len(时间平滑跨度)和h_len(频率窗口长度)参数,以获得最佳的分析效果。